TypeError:当尝试通过 Google Apps 脚本将 Google 表格作为 PDF 附件发送时,sheet.getAs() 不是函数

问题描述 投票:0回答:1

我正在尝试使用 Google Apps 脚本通过电子邮件将 Google 表格作为 PDF 附件发送。为此,我使用 getAs() 方法将工作表转换为 PDF,然后可以将其附加到电子邮件中。但是,当我运行我的脚本时,我遇到了一个 TypeError,它说“sheet.getAs() 不是一个函数”。

这是我正在使用的代码:

function dailyOnHandReport() {
  var sheet = SpreadsheetApp.openById("1axXcJKSawmrlLJYd1YepZZX-3hub7SCAbrE8Su3thMc").getSheetByName("Sheet1");
  var pdf = sheet.getAs(MimeType.PDF);
  var message = {
    to: "[email protected]",
    subject: "Daily On Hand Sheet",
    body: "Here's our On Hands for today /n/nHave a great eveing!.",
    attachments: [pdf]
  };
  MailApp.sendEmail(message);
}

我也尝试过使用 getBlob() 方法而不是 getAs(),但这导致了一个不同的 TypeError,它说“sheet.getBlob() 不是一个函数”。似乎这两种方法都没有按预期工作,我不确定如何解决这个问题。

我已经寻求帮助并尝试了不同的解决方案,但到目前为止都没有奏效。

email google-apps-script google-sheets google-drive-api pdf-generation
1个回答
0
投票

Class Sheet没有

getAs
的方法。我认为这就是您当前问题的原因。当你想导出PDF格式的特定工作表时,如何进行以下修改?

修改脚本:

function dailyOnHandReport() {
  var spreadsheetId = "1axXcJKSawmrlLJYd1YepZZX-3hub7SCAbrE8Su3thMc";
  var ss = SpreadsheetApp.openById(spreadsheetId);
  var sheet = ss.getSheetByName("Sheet1");
  var url = `https://docs.google.com/spreadsheets/d/${spreadsheetId}/export?format=pdf&gid=${sheet.getSheetId()}`;
  var pdf = UrlFetchApp.fetch(url, { headers: { authorization: "Bearer " + ScriptApp.getOAuthToken() } }).getBlob();
  var message = {
    to: "[email protected]",
    subject: "Daily On Hand Sheet",
    body: "Here's our On Hands for today /n/nHave a great eveing!.",
    attachments: [pdf]
  };
  MailApp.sendEmail(message);
}

如果你的Spreadsheet只有一张“Sheet1”,下面的修改怎么样?

function dailyOnHandReport() {
  var spreadsheetId = "1axXcJKSawmrlLJYd1YepZZX-3hub7SCAbrE8Su3thMc";
  var ss = SpreadsheetApp.openById(spreadsheetId);
  var pdf = ss.getBlob();
  var message = {
    to: "[email protected]",
    subject: "Daily On Hand Sheet",
    body: "Here's our On Hands for today /n/nHave a great eveing!.",
    attachments: [pdf]
  };
  MailApp.sendEmail(message);
}
  • 当从 Google 文档文件(文档、电子表格、幻灯片)中检索到 blob 时,mimeType 会自动更改为
    application/pdf
    。这样,
    getBlob
    就可以使用了。

参考资料:

© www.soinside.com 2019 - 2024. All rights reserved.