写入表格的 Google 脚本

Posted

技术标签:

【中文标题】写入表格的 Google 脚本【英文标题】:Google Scripts writing to Sheets 【发布时间】:2020-09-17 09:18:06 【问题描述】:

我有下面的脚本来提取有关谷歌教室的信息。 我似乎在用头撞砖墙 - 我怎样才能将 course.data 写入我正在创建的谷歌表中? 非常感谢

/**
 * 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 = "ScriptClas-s-roomCodes "+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 = Clas-s-room.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】:

我相信你的目标如下。

您希望通过修改 Google Apps 脚本将每个 courses[i]course.name, course.alternateLink, course.enrollmentCode, course.courseState 的值放入创建的电子表格中。

对于这个,这个答案怎么样?

修改点:

SpreadsheetApp.create 返回电子表格对象。所以你可以使用它。 在 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 = Clas-s-room.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 = Clas-s-room.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.');

在这种情况下,这些值将放在创建的电子表格的第一个选项卡中。

参考资料:

create(name, rows, columns) setValues(values) Useful links for using Google Apps Script

【讨论】:

以上是关于写入表格的 Google 脚本的主要内容,如果未能解决你的问题,请参考以下文章

写入电子表格时强制使用 Google Apps 脚本中的小数位

MySQL 查询错误“非法小时值”导致 Google Apps 脚本中出现循环和写入问题

Google 表格的静态 TIMESTAMP

将关联数组转换为数字以在Apps脚本中写入工作表

在Google电子表格小工具中,如何写入电子表格?

在 Swift 中写入 Google 表格