Email 确认后将附有PDF的邮件发送给收件人
我必须每天编辑谷歌电子表格文件。当我完成时,我想向人们发送一条消息,通知他们我完成了。附在通知邮件之后,我想给他们发送一份特定的表格(称为报告),PDF格式 我找到了这个发送电子邮件的选项(并且工作正常): 是否有办法将特定工作表添加为PDF格式 第二个问题:如何在电子表格中创建某种按钮(“立即发送”),以便轻松发送此电子邮件,而不必每次都打开脚本编辑器?菜单驱动的按需操作 在GoogleSheets用户界面中,一个菜单项将是一种自然的方式,可以将其设置为按需运行。1学习如何自己执行此操作的一个好资源是Google的 从该教程中,以下代码将向电子表格中添加“发送报告”菜单项,选中该菜单项时将调用Email 确认后将附有PDF的邮件发送给收件人,email,pdf,google-apps-script,google-sheets,Email,Pdf,Google Apps Script,Google Sheets,我必须每天编辑谷歌电子表格文件。当我完成时,我想向人们发送一条消息,通知他们我完成了。附在通知邮件之后,我想给他们发送一份特定的表格(称为报告),PDF格式 我找到了这个发送电子邮件的选项(并且工作正常): 是否有办法将特定工作表添加为PDF格式 第二个问题:如何在电子表格中创建某种按钮(“立即发送”),以便轻松发送此电子邮件,而不必每次都打开脚本编辑器?菜单驱动的按需操作 在GoogleSheets用户界面中,一个菜单项将是一种自然的方式,可以将其设置为按需运行。1学习如何自己执行此操作的一个
sendReport\(
函数):
/**
*打开电子表格时运行的特殊函数,用于添加
*将自定义菜单添加到电子表格。
*/
函数onOpen(){
var电子表格=SpreadsheetApp.getActive();
变量菜单项=[
{name:'发送报告',functionName:'发送报告}
];
电子表格。添加菜单(“自定义”,菜单项);
}
sendReport\uux()
函数
假设我们有一个getPdfBlob()
函数,它将返回一个适合附加到电子邮件的blob
。考虑到这一点,下面是所有sendReport_389;()
需要做的事情:
//来自https://stackoverflow.com/a/37149036/1677912
函数sendReport_uz(){
//配置参数;根据需要自定义
var sheetName=“报告”;
var subject=“电子邮件主题行”;
var收件人=”user1@example.com, user2@example.com";
var htmlMessage=“问候,
”
+“请查看今天的报告,以PDF格式附上。
”
+“干杯,
;
//获取感兴趣的电子表格和工作表的ID
var ss=SpreadsheetApp.getActive();
var sheetId=ss.getSheetByName(sheetName).getSheetId();
//检索PDF blob
var pdfBlobArray=getPdfBlobs(ss.getId(),sheetId);
//发送电子邮件+附件
MailApp.sendEmail(收件人,主题,“报告附件”{
htmlBody:htmlMessage,
附件:pdfBlobArray
});
}
getPdfBlobs()
实用程序函数
中会出现一个用于生成电子表格PDF的实用程序。
它可以调整为返回一个blob
,其中包含您要查找的单个工作表的PDF
必须通过“资源>高级驱动器服务…”和开发人员控制台启用。(有关更多信息,请参阅。)
注意:通过编辑嵌入此函数中的URL参数,可以对PDF输出进行一些粗略的自定义
/**
*将电子表格中的一个或所有工作表作为PDF文件块获取。
*
*发件人:https://stackoverflow.com/a/37149036/1677912
*改编自https://stackoverflow.com/a/30492812/1677912
*
*要导出的电子表格的@param{String}optSSId(可选)ID。
*如果未提供,脚本将假定它是
*工作表绑定并打开激活的电子表格。
*要导出的单个工作表的@param{String}optSheetId(可选)ID。
*如果未提供,将导出所有图纸。
*/
函数getPdfBlobs(optSSId、optSheetId){
//如果提供了工作表ID,请打开该工作表,否则假定脚本为
//绑定图纸,然后打开激活的电子表格。
var ss=(optSSId)?SpreadsheetApp.openById(optSSId):SpreadsheetApp.getActiveSpreadsheet();
//获取电子表格的URL,并删除尾部的“编辑”
var url=ss.getUrl().replace(/edit$/,“”);
//获取电子表格中所有工作表的数组
var sheets=ss.getSheets();
//循环浏览所有图纸,生成PDF Blob。
var blobArray=[];
对于(var i=0;i
function sendEmails() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process
var numRows = 2; // Number of rows to process
// Fetch the range of cells A2:B3
var dataRange = sheet.getRange(startRow, 1, numRows, 2)
// Fetch values for each row in the Range.
var data = dataRange.getValues();
for (i in data) {
var row = data[i];
var emailAddress = row[0]; // First column
var message = row[1]; // Second column
var subject = "Sending emails from a Spreadsheet";
MailApp.sendEmail(emailAddress, subject, message);
}
}