Google 写入表格的脚本
Google Scripts writing to Sheets
我有下面的脚本来提取有关 google 教室的信息。
我似乎在用头撞砖墙 - 我怎样才能将 course.data 写入我正在创建的 google sheet?
非常感谢
/**
* 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.');
}
}
我相信你的目标如下。
- 您想通过修改 Google Apps 脚本将每个
courses[i]
的 course.name, course.alternateLink, course.enrollmentCode, course.courseState
的值放入创建的电子表格中。
为此,这个答案怎么样?
修改点:
SpreadsheetApp.create
returns 电子表格对象。所以你可以用这个。
- 在for循环中将值放入电子表格时,处理成本会很高。所以在这个答案中,我想准备一个数组并将值放入 for 循环中的数组。在 for 循环之后,使用数组将值放入电子表格。
当以上几点反映到你的脚本中,就变成了下面这样。
修改后的脚本:
请按如下方式修改您的脚本。
从:
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.');
}
- 在这种情况下,值被放入创建的电子表格的第一个选项卡。
参考文献:
我有下面的脚本来提取有关 google 教室的信息。 我似乎在用头撞砖墙 - 我怎样才能将 course.data 写入我正在创建的 google sheet? 非常感谢
/**
* 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.');
}
}
我相信你的目标如下。
- 您想通过修改 Google Apps 脚本将每个
courses[i]
的course.name, course.alternateLink, course.enrollmentCode, course.courseState
的值放入创建的电子表格中。
为此,这个答案怎么样?
修改点:
SpreadsheetApp.create
returns 电子表格对象。所以你可以用这个。- 在for循环中将值放入电子表格时,处理成本会很高。所以在这个答案中,我想准备一个数组并将值放入 for 循环中的数组。在 for 循环之后,使用数组将值放入电子表格。
当以上几点反映到你的脚本中,就变成了下面这样。
修改后的脚本:
请按如下方式修改您的脚本。
从: 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.');
}
- 在这种情况下,值被放入创建的电子表格的第一个选项卡。