【GAS】GoogleAppsScript를 사용하여 클래스룸에서 드라이브의 과제를 배포하는 방법(CourseWork.create)

안녕하세요! GoogleAppsScript를 사용한 업무 효율화에 열중하는 초보자 프로그래머, 타로입니다.

오늘은 GoogleAppsScript(GAS)를 사용하여 클래스룸에서 과제를 배포하는 방법에 대해 쓰고 싶습니다.

초보자용입니다만, javascript의 기본적인 룰은 눌러 두는 것이 이해하기 쉽다고 생각하기 때문에, 아직의 분은 Progate 로 바삭바닥과 javascript의 문법을 학습해 보세요.

또, 초보자가 수당 점차 코드를 써 보고 막힌 곳이나 그 때의 마음의 목소리 등도 힘들게 쓰고 있습니다. 방법만 살짝 알고 싶은 분은, 마지막 요약 를 참조해 주세요.

또, ReferenceError: Classroom is not defined 라고 에러가 나 버린 분은, 이 기사 를 참고로 해 봐 주세요.
그럼, 조속히 시도해 봅시다!

그런 방법이 두 가지



공식 문서 에는, courseWork와 courseWorkMaterial의 2개, 그것 같은 클래스가 있습니다만, 이 기사 그럼, courseWork 합니다.

제출하는 과제는 Google 드라이브에 있는 제출 과제 (테스트) 라는 아무것도 아닌 슬라이드 자료로 합니다.

는, 공식 문서 보다, coursework의 내용을 일단 봐 봅니다.
{
  "courseId": string,
  "id": string,
  "title": string,
  "description": string,
  "materials": [
    {
      object (Material)
    }
  ],
  "state": enum (CourseWorkState),
  "alternateLink": string,
  "creationTime": string,
  "updateTime": string,
  "dueDate": {
    object (Date)
  },
  "dueTime": {
    object (TimeOfDay)
  },
  "scheduledTime": string,
  "maxPoints": number,
  "workType": enum (CourseWorkType),
  "associatedWithDeveloper": boolean,
  "assigneeMode": enum (AssigneeMode),
  "individualStudentsOptions": {
    object (IndividualStudentsOptions)
  },
  "submissionModificationMode": enum (SubmissionModificationMode),
  "creatorUserId": string,
  "topicId": string,

  // Union field details can be only one of the following:
  "assignment": {
    object (Assignment)
  },
  "multipleChoiceQuestion": {
    object (MultipleChoiceQuestion)
  }
  // End of list of possible types for union field details.
}

응, 굉장히 있어. . . 많이 있어 너무 자세하게 읽는 마음이 별로 없어져 버렸으므로, 아까 기사 를 참고로 만들어 보고 싶습니다.
이 기사에서는, 배포하는 과제의 정보로서, title, description, maxPoints, dueDate, dueTime, state, workType, materials를 지정하고 있네요.
dueDate와 dueTime은 없이도 갈 수 있는 것 같은 생각이 들기 때문에, 그 이외의 정보는 지정해, CourseWork.create 메소드를 사용해 봅시다.
function createCourseWork() {
  var targetCourseId = '○○○○';//コースIDを入力

  //作成したい課題を作る
  var createAssignment = {
    title: 'テスト',
    description: 'これはテストです',
    maxPoints: 100,
    state: 'PUBLISHED',
    workType: 'ASSIGNMENT',
    materials: [{
      "driveFile": {
        "driveFile": {"id": "○○○○"}// 配布したいDriveファイルのIDを入力
      }
    }]
  };
  Classroom.Courses.CourseWork.create(createAssignment, targetCourseId);
}

이것으로 돌리면,,,
무려! ! ! 확실히 과제가 배포되고 있었습니다~~~!

Classroom의 API는 능숙하지 않은 것이 많기 때문에, 이렇게 휙 실행 할 수 있어 반대로 이상하다고 하는,,,웃음
그럼, 모처럼이므로, 최소 어느 정보까지 입력하면 좋은가를 조사했는데,title, state, workType, materials 의 4점을 입력하면 좋은 것을 알았습니다.
덧붙여서 state를 입력하지 않으면 "초안"이되는 것 같습니다.

오, 단지 배포한 파일이 열람만 되어 있는 모양. . .

평상시 사용할 때는, 학생 모두에게 카피를 배포하는 것이 많기 때문에, 그 형태로 배포하고 싶네요.
살펴보면 driveFile의 속성에 shareMode라는 키가있었습니다. 이것을 STUDENT_COPY 라고 지정하면 카피를 배포할 수 있을 것 같습니다.
다시 시도해 봅시다.
function createCourseWork() {
  var targetCourseId = '○○○○';//コースIDを入力

  //作成したい課題を作る
  var createAssignment = {
    title: 'テスト',
    description: 'これはテストです',
    maxPoints: 100,
    state: 'PUBLISHED',
    workType: 'ASSIGNMENT',
    materials: [{
      "driveFile": {
        "driveFile": {"id": "○○○○"},// 配布したいDriveファイルのIDを入力
        "shareMode": 'STUDENT_COPY'
      }
    }]
  };
  Classroom.Courses.CourseWork.create(createAssignment, targetCourseId);
}

그래, 잘 갔다! 이상, 정리합니다! ! !

요약 - GoogleClassroom에서 드라이브 문제를 배포하는 방법



코드는 아래.
function createCourseWork() {
  var targetCourseId = '○○○○';//コースIDを入力

  //作成したい課題を作る
  var createAssignment = {
    title: 'テスト',
    state: 'PUBLISHED',
    workType: 'ASSIGNMENT',
    materials: [{
      "driveFile": {
        "driveFile": {"id": "○○○○"},// 配布したいDriveファイルのIDを入力
        "shareMode": 'STUDENT_COPY'
      }
    }]
  };
  Classroom.Courses.CourseWork.create(createAssignment, targetCourseId);
}

코스명으로부터 코스 ID를 취득하는 곳으로부터 기술하면 이런 느낌이 됩니다.
function createCourseWork() {
  //所属しているクラスの一覧を配列で取得
  var myCourses = Classroom.Courses.list().courses;

  ////取得したいクラスのIDを、クラス名から取得
  var targetCourseName = '○○○○';// 課題を配布したいクラス名を入力
  for (i = 0; i < myCourses.length; i++) {
    if (myCourses[i]['name'] === targetCourseName) {//targetClassNameに一致するときのみ以下の処理を実施
      var targetCourseId = myCourses[i]['id'];
    } else {
      continue;
    }
  }

  var createAssignment = {
    title: 'テスト',
    state: 'PUBLISHED',
    workType: 'ASSIGNMENT',
    materials: [{
      "driveFile": {
        "driveFile": {"id": "○○○○"},// 配布したいDriveファイルのIDを入力
        "shareMode": 'STUDENT_COPY'
        }
      }]
  };
  Classroom.Courses.CourseWork.create(createAssignment, targetCourseId);
}

이상, 참고가 되면 기쁩니다. Google Classroom API는 일본어의 정보가 적기 때문에, 앞으로도 여러가지 트라이 해 본 결과를 기사에 써 가고 싶습니다!

좋은 웹페이지 즐겨찾기