【问题标题】:How to send my target Sheet as a pdf to an email address如何将我的目标工作表以 pdf 格式发送到电子邮件地址
【发布时间】:2019-10-23 09:21:16
【问题描述】:

我有一个表单,提交时将触发一个函数,将该提交的值写入电子表格中的正确工作表。 然后,我希望将调整后的表格通过电子邮件发送给某人。

我搜索了 google api 寻求帮助,但无法解析或反向工程正确的代码

function sendpdf(){                 // Function trigger is on form submit

var ss = SpreadsheetApp.getActiveSheet();
var sourceSheet = ss.getSheetName();   
var workingRow = ss.getLastRow(); 
var dataRange = ss.getRange(workingRow, 1, 1, 4);
var data = dataRange.getValues();
var row = data[0]; // entire row
var col1 = row[0];  // first column timestamp A
var col2 = row[1];  // Client B
var col3 = row[2];  // Item  C

var sass = SpreadsheetApp.getActiveSpreadsheet();
var targetSheet = sass.getSheetByName(col2); 

targetSheet.insertRowBefore(4);
targetSheet.getRange("A4").setValue(col1);
targetSheet.getRange("B4").setValue(col2);
targetSheet.getRange("C4").setValue(col3);

MailApp.sendEmail(to:"reciever@email.com",subject:"See Attached PDF regarding" + col2,body:col2+" submitted a new request"


// , attach:targetSheet.pdf
// need the code to turn the targetSheet into a PDF and then email the PDF

)



}

电子表格包含 12 张表格,我希望脚本能够通过电子邮件发送刚刚调整给某人的正确表格,任何帮助将不胜感激

【问题讨论】:

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


【解决方案1】:
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var folderID = "FOLDERID"; // Folder id to save pdf in a folder.
var folder = DriveApp.getFolderById(folderID); 
var newSpreadsheet = SpreadsheetApp.create(pdfName); // Name new Spreadsheet
var sheet = sourcesheet.copyTo(newSpreadsheet); //copy activesheet to new spreadsheet
newSpreadsheet.getSheetByName('Sheet1').activate(); //select "sheet1"
newSpreadsheet.deleteActiveSheet(); //delete "sheet1"
var newFile = folder.createFile(newSpreadsheet);
var pdf = DriveApp.getFileById(newSpreadsheet.getId());
var theBlob = pdf.getBlob().getAs('application/pdf').setName(pdfName); //create pdf 
from new sheet in folder

var   url,  //create variable from url of the new sheet
    sheets = newSpreadsheet.getSheets()


url = Drive.Files.get(newSpreadsheet.getId())
      .exportLinks['application/pdf']; //create the pdf 
url = url + '&size=a4' + //paper size
'&portrait=true' + //orientation, false for landscape
'&fitw=true' + //fit to width, false for actual size
'&sheetnames=false&printtitle=false&pagenumbers=false' + //hide optional
'&gridlines=false' + //false = hide gridlines, true = show
'&fzr=false'; //do not repeat row headers (frozen rows) on each page, true = show
 var token = ScriptApp.getOAuthToken();
 var response = UrlFetchApp.fetch(url, {
  headers: {
     'Authorization': 'Bearer ' + token
 }
 });


DriveApp.getFilesByName(pdfName).next().setTrashed(true); //delete newSpreadsheet

var attachmentName = pdfName + '.pdf';

var optAdvancedArgs = {name: "NAMEFROM", htmlBody: htmlBody, replyTo : from, 
from:from, attachments: [response.getBlob().setName(attachmentName)], };  //attach pdf

GmailApp.sendEmail(mailTo, subject, body, optAdvancedArgs); //send email with 
advanced arguments

这应该让你继续...... 祝你好运 !

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-28
    • 2016-01-06
    • 1970-01-01
    • 1970-01-01
    • 2018-11-06
    • 1970-01-01
    • 2016-11-04
    • 1970-01-01
    相关资源
    最近更新 更多