2017-03-27 14 views
0

私はgoogle appsスクリプトを使用して、教室用にアップロードされたドキュメントを割り当てます。ただし、エラーがあります。Google Classroom - プログラムで割り当てを作成する

実行に失敗しました:無効なJSONペイロードが受信されました。不明な名前 「course_work.materials [0]」の「share_mode」:フィールドが見つかりません。無効です JSONペイロードが受信されました。不明な名前 "id" at 'course_work.materials [0] .drive_file':フィールドが見つかりません。無効なJSON ペイロードが受信されました。不明な名前 "title" at 'course_work.materials [0] .drive_file':フィールドが見つかりません。 (行2、 ファイル "TEST")[合計実行時間0.061秒]

ここに私のコードです。私はエラーがmaterialsにあることを知っているが、私は間違って何をしたのか分からない。ドキュメント毎の

function myFunction() { 
    var exec = Classroom.Courses.CourseWork.create({ 
    title: "Test File", 
    state: "DRAFT", 
    materials: [ 
     { 
     driveFile: {id: "1ENk55RMtApIydyPFe0uyuhmu6nSV4", title: "Test File"}, 
     shareMode: "STUDENT_COPY" 
     } 
     ], 
    workType: "ASSIGNMENT" 
    }, "3896298178"); 
    Logger.log(exec); 
} 

答えて

3

。コードを更新して機能させました。

要求:

function myFunction() { 
    var ClassSource = { 
    title: "Test File", 
    state: "DRAFT", 
    materials: [ 
     { 
     driveFile:{ 
     driveFile: { 
      id: "fileID", 
      title: "Sample Document" 

     }, 
     shareMode: "STUDENT_COPY" 
     } 

     } 
     ], 
    workType: "ASSIGNMENT" 
    }; 

    Classroom.Courses.CourseWork.create(ClassSource, COURSEID) 
    //Logger.log(exec); 
} 

結果:要求の整形が間違っているので

enter image description here

は、我々はInvalid JSON payload received.を受けます。私の思っていたより少し複雑です。そのために、Try this APIを使ってリクエストフォーマットを見てみると、あなたの問題を解決するのに本当に役立ちました。

これが役に立ちます。

+1

共用体とドライブのリソースの両方に「driveFile」という名前が付けられています。冗長で混乱しているようだ。 –

+1

ありがとう、Mr. Rebot!出来た。 – chopz

+0

@SpencerEaston私はそれが冗長で混乱していることに同意します。たぶん機能要求がこの混乱を解決する可能性があります。 –

2

Drivefileプロパティtitleは読み取り専用としてマークされます。ちょうどidを使用してください。あなたの問題の根本を発見

https://developers.google.com/classroom/reference/rest/v1/DriveFile

+0

感謝を見るために、AJAXリクエストの「データ」として渡されている独自の授業オブジェクトを構築することができます! このエラーがあります。 '[17-03-28 13:45:37:048 HKT]実行に失敗しました:無効なJSONペイロードが受信されました。 'course_work.materials [0]'の不明な名前「share_mode」:フィールドが見つかりません。 無効なJSONペイロードが受信されました。 'course_work.materials [0] .drive_file'の不明な名前の「id」:フィールドが見つかりません。 (行2、ファイル "TEST")[合計実行時間0.046秒] ' – chopz

+0

@ Mr.Rebotが上記の正しい答えを見つけました。 –

2

以下のajaxリクエストを送信して課題を作成することができます。以下のコードはAngular用に書かれていますが、簡単にjQueryスクリプトに変換できます。あなたは、完全なオブジェクト構造訪問に返信用CourseWork API

$http({ 
     url: 'https://classroom.googleapis.com/v1/courses/'+courseId+'/courseWork?access_token='+$scope.session.access_token, 
     method: 'POST', 
     data:{ 
      "title": title, 
      "description": description, 
      "state": "PUBLISHED", 
      "workType": "ASSIGNMENT", 
      "submissionModificationMode": "MODIFIABLE_UNTIL_TURNED_IN", 
      "associatedWithDeveloper": true 
     } 
    }).then(function(response){ 
     console.log(response); 
     if(response.status==200){ 

     } 
    }, function(response){ 
     console.log(response); 
    }); 
} 
関連する問題