简体   繁体   中英

Google Scripts writing to Sheets

I have the script below to pull out information about google classrooms. I seem to be bashing my head against a brick wall - how can I write the course.data into the google sheet I am creating? Many thanks

/**
 * Lists 100000 course names and ids.
 */
function listCourses() {
  var rows = 100000
  var columns = 5
  var date = Utilities.formatDate(new Date(), "GMT+1", "dd/MM/yyyy")
  var spreadsheet = "ScriptClassroomCodes "+date

  var oldfiles = DriveApp.getFilesByName(spreadsheet);
  while (oldfiles.hasNext()) {
    var oldfile = oldfiles.next();
    oldfile.setTrashed(true);
}
  var optionalArgs = {
    pageSize: rows
  };
  SpreadsheetApp.create(spreadsheet, rows, columns)
  var currentfile = DriveApp.getFilesByName(spreadsheet);
  while (currentfile.hasNext()) {
    var file = currentfile.next();
    var sheetid = file.getId();
}

var sheet = SpreadsheetApp.openById(sheetid)

  var response = Classroom.Courses.list(optionalArgs);
  var courses = response.courses;
  if (courses && courses.length > 0) {
    for (i = 0; i < courses.length; i++) {
      var course = courses[i];
      Logger.log(course.name, course.alternateLink, course.enrollmentCode, course.courseState);
    }
  } else {
    Logger.log('No courses found.');
  }
}

I believe your goal as follows.

  • You want to put the values of course.name, course.alternateLink, course.enrollmentCode, course.courseState of each courses[i] to the created Spreadsheet by modifying your Google Apps Script.

For this, how about this answer?

Modification points:

  • SpreadsheetApp.create returns the Spreadsheet object. So you can use this.
  • When the values are put to the Spreadsheet in the for loop, the process cost will be high. So in this answer, I would like to prepare an array and put the values to the array in the for loop. And after the for loop, the values are put to the Spreadsheet using the array.

When above points are reflected to your script, it becomes as follows.

Modified script:

Please modify your script as follows.

From:
 SpreadsheetApp.create(spreadsheet, rows, columns) var currentfile = DriveApp.getFilesByName(spreadsheet); while (currentfile.hasNext()) { var file = currentfile.next(); var sheetid = file.getId(); } var sheet = SpreadsheetApp.openById(sheetid) var response = Classroom.Courses.list(optionalArgs); var courses = response.courses; if (courses && courses.length > 0) { for (i = 0; i < courses.length; i++) { var course = courses[i]; Logger.log(course.name, course.alternateLink, course.enrollmentCode, course.courseState); } } else { Logger.log('No courses found.'); }
To:
 var spreadsheet = SpreadsheetApp.create(spreadsheet, rows, columns); // Modified var sheet = spreadsheet.getSheets()[0]; // Added var response = Classroom.Courses.list(optionalArgs); var courses = response.courses; if (courses && courses.length > 0) { var values = []; // Added for (i = 0; i < courses.length; i++) { var course = courses[i]; values.push([course.name, course.alternateLink, course.enrollmentCode, course.courseState]); // Added } sheet.getRange(1, 1, values.length, values[0].length).setValues(values); // Added } else { Logger.log('No courses found.'); }
  • In this case, the values are put to the 1st tab of the created Spreadsheet.

References:

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM