[GAS] Google AppsScript를 사용하여 스프레드 시트 목록에서 클래스 룸에서 문제를 배포하는 방법 (CourseWork.create)

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

오늘은 GoogleAppsScript(GAS)를 사용하여 클래스룸에 학생을 초대하는 방법에 대해 써 가고 싶습니다.

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

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

또한 ReferenceError: Classroom is not defined와 오류가 발생한 경우 이 기사을 참조하십시오.
그럼, 조속히 시도해 봅시다!

스프레드시트에서 학생 목록 가져오기



먼저 스프레드시트에서 학생 ID를 가져옵니다.

원하는 데이터는
열의 2행부터 8행에 저장되어 있으므로, 그 범위의 데이터를 취득합시다.
function createCourseWork () {
  var studentListSheetUrl = '取得したいスプレッドシートのURL';
  var studentListSheet = SpreadsheetApp.openByUrl(studentListSheetUrl).getSheetByName('取得したいシート名');
  var studentList = studentListSheet.getRange(2, 1, 7, 1).getValues().flat();//取得したい範囲のデータを取得し、1次元の配列に変える
}

이제 변수studentList에 학생 이메일 주소의 배열을 가져올 수 있었습니다. studentList 안을 출력하면[××××@gmail.com, ××××@gmail.com,・・・]이런 느낌으로 1차원 배열로 되어 있습니다.flat()를 지정하지 않으면 [[××××@gmail.com], [××××@gmail.com],・・・]이런 식으로 배열 안에 배열이 있는, 2차원 배열이 되어 버리는군요. 과제를 배포하는 학생을 지정한다studentIds에는 1차원의 배열을 넣기 때문에, 그대로라고 넣을 수 없습니다. 그런 이유로 flat() 로 1차원 배열로 해 봅시다.

취득한 학생 ID로부터 과제 배포



그런데, ID를 취득할 수 있으면, 나머지는 클래스룸에서 지정한 학생에게 과제를 배포하는 방법 에 쓴 대로로 좋고, studentId 에 취득한 studentList 를 건네주면 과제를 배포할 수 있습니다.
function createCourseWork () {
  var studentListSheetUrl = '取得したいスプレッドシートのURL';
  var studentListSheet = SpreadsheetApp.openByUrl(studentListSheetUrl).getSheetByName('取得したいシート名');
  var studentList = studentListSheet.getRange(2, 1, 7, 1).getValues().flat();//取得したい範囲を指定

  var targetCourseId = '××××'//課題を配布するコースのIDを入力
  var createAssignment = {
    title: '××××',//配布する課題のタイトルを入力
    state: 'PUBLISHED',
    workType: 'ASSIGNMENT',
    materials: [{
      "driveFile": {
        "driveFile": {"id": "××××"},//課題として配布するファイルのIDを取得
        "shareMode": 'STUDENT_COPY'
        }
      }],
    assigneeMode: "INDIVIDUAL_STUDENTS",
    individualStudentsOptions: {
      "studentIds": studentList//スプレッドシートから取得した生徒のIDリストを渡す
    }
  };
  Classroom.Courses.CourseWork.create(createAssignment, targetCourseId);
}

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

좋은 웹페이지 즐겨찾기