Скрипты Google для записи в Таблицы - PullRequest
1 голос
/ 29 мая 2020

У меня есть приведенный ниже скрипт для извлечения информации о классах Google. Кажется, я бьюсь головой о кирпичную стену - как мне записать course.data в создаваемый мной лист Google? Большое спасибо

/**
 * 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.');
  }
}

1 Ответ

1 голос
/ 31 мая 2020

Я считаю, что ваша цель следующая.

  • Вы хотите поместить значения course.name, course.alternateLink, course.enrollmentCode, course.courseState каждого courses[i] в созданную электронную таблицу, изменив свой скрипт Google Apps.

Для этого как насчет этого ответа?

Пункты модификации:

  • SpreadsheetApp.create возвращает объект Spreadsheet. Таким образом, вы можете использовать это.
  • Когда значения помещаются в электронную таблицу для l oop, стоимость процесса будет высокой. Итак, в этом ответе я хотел бы подготовить массив и поместить значения в массив для l oop. И после l oop значения помещаются в электронную таблицу с использованием массива.

Когда указанные выше точки отражаются в вашем скрипте, он становится следующим:

Изменено скрипт:

Пожалуйста, измените ваш скрипт следующим образом.

От:
  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.');
  }
Кому:
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.');
}
  • В этом случае значения помещаются на 1-ю вкладку созданной электронной таблицы .

Ссылки:

...