在同一功能中创建和发送工作表

时间:2018-01-17 15:10:16

标签: google-apps-script google-sheets

我正在尝试创建一个简单的脚本,其中包含用于创建新工作表的功能和用于通过电子邮件发送这些工作表的主要功能当我尝试调用函数在main函数内创建工作表时,它会通过电子邮件发送空工作表。以下是我正在做的事情的样本:

function createnewsheets(mainfile, newsheetname) {
  mainfile.insertSheet(newsheetname);
  var sheet = mainfile.getSheetByName(newsheetname);
  var cell = sheet.getRange("A1");
  cell.setValue("Hello");
  return sheet;   
}
function doall(){
  var mainfile = SpreadsheetApp.openByUrl('https://docs.google.com/...');
  var sheet = createnewsheets(mainfile, "random");
  ////code to send sheet as attachment in email///
}

完整代码为here

现在这会发送空白工作表,但是如果首先执行 createnewsheets 而不返回并获取 doevery 中名称的工作表,则它确实有效。

我认为创建工作表后可能会出现等待问题,所以我也试过了Utilities.sleep(),但这并没有改变任何事情。

知道如何改进将会非常有帮助。提前谢谢。

1 个答案:

答案 0 :(得分:2)

Google Apps脚本应用对Google表格in batches所做的更改:

  

脚本通常需要从电子表格中读取数据,执行计算,然后将数据结果写入电子表格。 Google Apps脚本已经有一些内置的优化功能,例如使用前瞻性缓存来检索脚本可能获得的内容,编写缓存以保存可能设置的内容。

使用SpreadsheetApp.flush()来强制使用"在通过电子邮件发送工作表之前应用脚本所做的更改。

相关