簡體   English   中英

發送 PDF 活動表的附件與 Email 在同一活動表中的單元格參考

[英]Send PDF Attachment of Active Sheet with Email Cell Reference in Same Active Sheet

我正在嘗試將活動工作表和僅活動工作表作為 pdf 附件發送到位於單元格 C1 或 (1,3) 中的 email

當前腳本執行但我沒有收到 email。

function sendSheetToPdf(){
}
var ss = SpreadsheetApp.getActiveSpreadsheet();
var ssId = SpreadsheetApp.getActiveSpreadsheet().getId();
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var sheetName = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName();
var email = sheet.getRange(1,3).getValue();

// Base URL
var url = "mysheetsurl", ss.getId());

/* Specify PDF export parameters
From: https://code.google.com/p/google-apps-script-issues/issues/detail?id=3579
 */

var url_ext = 'exportFormat=pdf&format=pdf' // export as pdf / csv / xls / xlsx
     + '&size=A4' // paper size legal / letter / A4
     + '&portrait=true' // orientation, false for landscape
     + '&fitw=true&source=labnol' // fit to page width, false for actual size
     + '&sheetnames=false&printtitle=false' // hide optional headers and footers
     + '&pagenumbers=false&gridlines=false' // hide page numbers and gridlines
     + '&fzr=false' // do not repeat row headers (frozen rows) on each page
     + '&gid='; // the sheet's Id

var token = ScriptApp.getOAuthToken();

var response = UrlFetchApp.fetch(url + url_ext + sheet.getSheetId(), {                                 
        headers : {
            'Authorization' : 'Bearer ' + token
        }
    }).getBlob().setName(sheet.getName() + ".pdf");

sheet_as_pdf_blob_document=response;


// Email Business
var recipient = email;
var subject="Test"
var body="TEST.";
var nameOfSender="Test";

// Here we send the email

function sendReport() {
 
   var message = {
    to: recipient,
    subject: subject,
    body: body,
    name: nameOfSender,
    attachments: [sheet_as_pdf_blob_document]
  }

   MailApp.sendEmail(message);
}

我已經編寫了成功發送電子郵件的腳本,但從來沒有指定工作表名稱和 email 地址。 這次我想創建一種基於活動工作表發送電子郵件的動態方式。 提前致謝!

當前代碼中的問題:

  1. 您的 function 結構不正確。 在您的編輯器中運行此代碼時,您的代碼應該會顯示失敗的執行日志。

這是它的樣子:

function sendSheetToPdf(){
}

// process the sheet data and get pdf blob

function sendReport() {

  //send email
}
  1. 您的基礎 url 不正確。 根據您的參考資料指定 PDF 導出參數,您的基礎 url 應該是這樣的:

    var url = "https://docs.google.com/spreadsheets/d/" + doc.getId() + "/export?


示例工作代碼:

function sendSheetToPdf(){

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var ssId = SpreadsheetApp.getActiveSpreadsheet().getId();
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var sheetName = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName();
  var email = sheet.getRange(1,3).getValue();

  // Base URL
  var url = "https://docs.google.com/spreadsheets/d/"+ ss.getId()+"/export?";
  
  /* Specify PDF export parameters
  From: https://code.google.com/p/google-apps-script-issues/issues/detail?id=3579
  */

  var url_ext = 'exportFormat=pdf&format=pdf' // export as pdf / csv / xls / xlsx
      + '&size=A4' // paper size legal / letter / A4
      + '&portrait=true' // orientation, false for landscape
      + '&fitw=true&source=labnol' // fit to page width, false for actual size
      + '&sheetnames=false&printtitle=false' // hide optional headers and footers
      + '&pagenumbers=false&gridlines=false' // hide page numbers and gridlines
      + '&fzr=false' // do not repeat row headers (frozen rows) on each page
      + '&gid='; // the sheet's Id

  var token = ScriptApp.getOAuthToken();

  var response = UrlFetchApp.fetch(url + url_ext + sheet.getSheetId(), {                                 
          headers : {
              'Authorization' : 'Bearer ' + token
          }
      }).getBlob().setName(sheet.getName() + ".pdf");

  var sheet_as_pdf_blob_document=response;


  // Email Business
  var recipient = email;
  var subject="Test"
  var body="TEST.";
  var nameOfSender="Test";

  // Here we send the email

  var message = {
  to: recipient,
  subject: subject,
  body: body,
  name: nameOfSender,
  attachments: [sheet_as_pdf_blob_document]
  }

  MailApp.sendEmail(message);
   
}
  • 我剛剛修復了您的base url ,將sendReport()內容移到 sendSheetToPdf sendSheetToPdf()中,因為發送 email 所需的變量在sendSheetToPdf()中聲明。

Output:

在此處輸入圖像描述

暫無
暫無

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

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