Google脚本“ blob”中的内容持久性

时间:2019-06-26 19:46:44

标签: javascript google-apps-script

我在Google脚本中添加了一些代码行。重要的一点是(考虑到我的mySpreadsheet内容不错,同时设置了sourcefolder这个事实)

    [...]
    var mySpreadsheet = SpreadsheetApp.open(DriveApp.getFileById(source.getId()).makeCopy("test", folder))

  [...]
  var sheet = mySpreadsheet.getSheets()[0];

  sheet.clear();

  //email, obj, msg are string set before
  sendPdf(mySpreadsheet, pdfName, email, obj, msg);

}

function sendPdf(sheet, pdfName, email, object, message) {

  //save to pdf
  var pdfFile = sheet.getBlob().getAs('application/pdf').setName(pdfName);

  // Send the freshly constructed email 
  MailApp.sendEmail(email, object message, {attachments:[pdfFile]});
}

该脚本有效,这意味着该脚本创建了pdf并将其附加到电子邮件中。 我希望在清理文件(仅)工作表之后,会收到一个空的pdf。 mySpreadsheet为空,但随附的pdf包含从源复制的所有内容。这些数据来自哪里?清除工作表时将它们“存储”在哪里?预先谢谢你。

1 个答案:

答案 0 :(得分:1)

  • 根据您的情况,您希望使用sheet.clear()作为第一页的电子表格来接收电子表格,作为电子邮件的附件。

如果我的理解是正确的,那么该修改如何?

修改点:

  • 尽管我不确定您的整个脚本,但是运行sheet.clear()后,似乎电子表格没有保存。我认为这是您遇到问题的原因。
    • 在使用sheet.clear()之后保存电子表格,可以从更新的电子表格中检索该blob。

修改后的脚本:

请进行以下修改,然后再次进行测试。

从:
sheet.clear();
至:
sheet.clear();
SpreadsheetApp.flush(); // Added

参考:

如果我误解了您的问题,而这不是您想要的结果,我深表歉意。