【问题标题】:Email specific Google Sheet as PDF Attachment using Appscript使用 Appscript 将特定的 Google 表格作为 PDF 附件通过电子邮件发送
【发布时间】:2021-08-19 04:08:19
【问题描述】:

此代码完美运行,但是我希望将特定工作表作为 PDF 附件发送,而不是当前活动工作表。假设工作表名为“sheet2”

function sendReport() {
  SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data").hideSheet();
  var message = {
    to: "youremail@example.com",
    subject: "Monthly sales report",
    body: "Hi team,\n\nPlease find the monthly report attached.\n\nThank you,\nBob",
    name: "Bob",
    attachments: [SpreadsheetApp.getActiveSpreadsheet().getAs(MimeType.PDF).setName("Monthly sales report")]
  }
  MailApp.sendEmail(message);
  SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data").activate();
}

【问题讨论】:

  • 创建新电子表格,将感兴趣的工作表复制到新工作表中,将新工作表导出为 pdf,删除新工作表。

标签: javascript email google-apps-script google-sheets email-attachments


【解决方案1】:

由于您只想从电子表格中发送一个特定工作表,因此最好先导出特定工作表,然后将其附加到电子邮件中。

为了实现这一点,我建议您对代码进行以下更改:

代码

function sendReport() {
    let token = ScriptApp.getOAuthToken();
    let spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
    spreadsheet.getSheetByName("Data").hideSheet();
    let spreadsheetId = spreadsheet.getId();
    let sheetId = spreadsheet.getSheetByName("Sheet2").getSheetId();
    let sheetUrl = "https://docs.google.com/spreadsheets/d/" + spreadsheetId + "/export?" + "format=xlsx" + "&gid=" + sheetId + "&portrait=true" + "&exportFormat=pdf";
    let request = UrlFetchApp.fetch(sheetUrl, {
        headers: {
            'Authorization': 'Bearer ' + token
        }
    });
    let content = request.getContent();
    let message = {
        to: "youremail@example.com",
        subject: "Monthly sales report",
        body: "Hi team,\n\nPlease find the monthly report attached.\n\nThank you,\nBob",
        attachments: [{
            fileName: "Monthly sales report.pdf",
            content: content,
            mimeType: "application/pdf"
        }]
    }
    MailApp.sendEmail(message);
    spreadsheet.getSheetByName("Data").activate();
}

说明

以上代码使用getIdgetSheetId 方法分别检索电子表格和“Sheet2”的ID;这些 id 用于获取“Sheet2”的导出链接sheetUrl。之后,使用UrlFetchApp 发出请求以检索“Sheet2”的内容,然后使用attachments.content 字段将它们附加到邮件消息中。

参考

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多