簡體   English   中英

如何在谷歌應用腳​​本中以 PDF 格式通過電子郵件發送電子表格的特定部分?

[英]How to I email a certain part of a spreadsheet as PDF in google apps script?

我想知道是否可以指定工作表的某個部分以 pdf 格式通過電子郵件發送。 在這里,我有一些通過電子郵件發送整個工作表的代碼(即 Sheet3 或 Sheet 2 ....)有沒有辦法僅通過電子郵件將某個范圍作為 pdf 發送(單元格 A1:J13 轉換為 pdf,但該范圍之外的所有內容都會得到遺漏)?

 //This is a modified version of the code to keep personal data out. Sorry if some varriables 
    //are missing
    function sendReport() {
        var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet3')
        var AgentEmail = sh.getRange("B5").getValue();
        let token = ScriptApp.getOAuthToken();
        let spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
        let spreadsheetId = spreadsheet.getId();
        let sheetId = spreadsheet.getSheetByName("Sheet3").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:Agentemail, cc:email1, email2, email3,
            subject: "Subject",
            attachments: [{
                fileName: "Filename",
                content: content,
                mimeType: "application/pdf"
            }]
        }
        MailApp.sendEmail(message);
        spreadsheet.getSheetByName("Sheet3").activate();
    }

我會提出一個腳本來復制工作表,從副本中刪除所有不需要的行和列,然后調用函數發送 PDF,並刪除臨時工作表:

function main() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = ss.getSheetByName('Sheet1');

  var temp_sh = sh.copyTo(ss);                    // make a duplicate
  temp_sh.deleteColumns(11,sh.getLastColumn());   // remove columns
  temp_sh.deleteRows(14,sh.getLastRow());         // remove rows
  sendReport(temp_sh);                            // send PDF
  ss.deleteSheet(temp_sh);                        // delete the duplicate
}

function sendReport(sh) {
  var AgentEmail = sh.getRange("B5").getValue();
  let token = ScriptApp.getOAuthToken();
  let spreadsheet = sh.getParent();
  let spreadsheetId = spreadsheet.getId();
  let sheetId = sh.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: Agentemail, cc: email1, email2, email3,
    subject: "Subject",
    attachments: [{
      fileName: "Filename",
      content: content,
      mimeType: "application/pdf"
    }]
  }
  MailApp.sendEmail(message);
  // sh.activate();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM