Html Google sheets |将单元格范围发送到电子邮件正文
我目前有一个脚本,引用一个单元格(D28)并将其放在电子邮件正文中。是否可以引用一系列单元格?我希望将单元格(D28:D40)发送到电子邮件正文 非常感谢您的帮助Html Google sheets |将单元格范围发送到电子邮件正文,html,email,google-sheets,Html,Email,Google Sheets,我目前有一个脚本,引用一个单元格(D28)并将其放在电子邮件正文中。是否可以引用一系列单元格?我希望将单元格(D28:D40)发送到电子邮件正文 非常感谢您的帮助 function emailPdf(){ // this is the function to call var ss = SpreadsheetApp.getActiveSpreadsheet(); var sh = ss.getSheets()[3]; var shName = sh.getName() send
function emailPdf(){ // this is the function to call
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getSheets()[3];
var shName = sh.getName()
sendSpreadsheetToPdf(3, shName, ('email@gmail.com'), sh.getRange('B3').getValue(), Utilities.formatDate(sh.getRange('B4').getValue(), "NZ", "EEE MMM dd"), sh.getRange('D28').getValue());
}
function sendSpreadsheetToPdf(sheetNumber, pdfName, email, subject, date, htmlbody) {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var spreadsheetId = spreadsheet.getId();
var sheetId = sheetNumber ? spreadsheet.getSheets()[sheetNumber].getSheetId() : null;
var url_base = spreadsheet.getUrl().replace(/edit$/,'');
var url_ext = 'export?exportFormat=pdf&format=pdf' // export as pdf
+ (sheetId ? ('&gid=' + sheetId) : ('&id=' + spreadsheetId))
// following parameters are optional...
+ '&size=A4' // paper size
+ '&portrait=true' // orientation, false for landscape
+ '&fitw=true' // fit to width, false for actual size
+ '&sheetnames=true&printtitle=false&pagenumbers=true' // hide optional headers and footers
+ '&gridlines=false' // hide gridlines
+ '&fzr=false'; // do not repeat row headers (frozen rows) on each page
var options = {
headers: {
'Authorization': 'Bearer ' + ScriptApp.getOAuthToken(),
}
}
var response = UrlFetchApp.fetch(url_base + url_ext, options);
var blob = response.getBlob().setName(pdfName + '.pdf');
if (email) {
var mailOptions = {
attachments:blob, htmlBody:htmlbody
}
MailApp.sendEmail(
email,
subject+" | "+date+" (" + pdfName +")",
"html content only",
mailOptions);
MailApp.sendEmail(
Session.getActiveUser().getEmail(),
subject+" | "+date+" (" + pdfName +")",
"html content only",
mailOptions);
}
}
这是我的一个脚本,它提取多个值并将它们放入一个数组中,然后发送电子邮件给它们。确保在
.getValues()
之后,您有.toString()
将值转换为字符串,这可能是您遇到“Ljava.lang.Object;@7d193b9b”问题的地方。它只会生成一个列表,其中的值用逗号分隔
就像:
var list = refsheet.getRange(2, 14, 2+i).getValues().toString()
然后,作为完整的示例:
function AttendanceAlert() {
var refsheet = SpreadsheetApp.getActive().getSheetByName("AttendanceNotification")
var column = refsheet.getRange('N2:N');
var cell = refsheet.getRange(1, 10).getValue(); //get the date I want to search for
var celldate = new Date(cell);
var date = Utilities.formatDate(celldate, "GMT","EEE, MM-dd-yy");
var values = column.getValues(); // get all data in one call
var ct = 0;
while ( values[ct][0] != "" ) {
ct++;
}
var numbers = ct
for(var i = 0; i < numbers; i++) {
var list = refsheet.getRange(2, 14, 2+i).getValues().toString()
Logger.log(list)
}
var recipientsTO = "recipient@email.com" + "," + "recipient@email.com";
MailApp.sendEmail(recipientsTO, "Attendance Update :"+" "+ date , "These individuals have 5 or more total infractions (see parentheses for total), and one recent infraction as of "+ date + ":" +" "+ list + '\n' +
}
sendSpreadsheetToPdf(3, shName, ('email@gmail.com'), sh.getRange('B3').getValue(), Utilities.formatDate(sh.getRange('B4').getValue(), "NZ", "EEE MMM dd"), sh.getRange(28,4,13,1).getValues().toString());
让我知道这是否有效
更新:
要获得以换行符而不是逗号分隔的值,请尝试以下操作:
sendSpreadsheetToPdf(3, shName, ('email@gmail.com'), sh.getRange('B3').getValue(), Utilities.formatDate(sh.getRange('B4').getValue(), "NZ", "EEE MMM dd"), sh.getRange(28,4,13,1).getValues().join("\n"));
如果不起作用,请尝试:
sendSpreadsheetToPdf(3, shName, ('email@gmail.com'), sh.getRange('B3').getValue(), Utilities.formatDate(sh.getRange('B4').getValue(), "NZ", "EEE MMM dd"), sh.getRange(28,4,13,1).getValues().join('<br/>'));
sendSpreadsheetToPdf(3,shName,('email@gmail.com“),sh.getRange('B3').getValue(),Utilities.formatDate(sh.getRange('B4').getValue(),“NZ”,“EEE MMM dd”),sh.getRange(28,4,13,1).getValues().join('
');
您可以使用getRange(行、列、numRows、numColumns),然后使用getValues()和数组吗?您还可以在电子邮件中嵌入一个表:谢谢您的回复。我尝试了您的建议sh.getRange(28,4,13,1).getValue()
,但不幸的是,它只返回电子邮件正文中的第一个单元格(D28)。我可能不得不考虑嵌入一个表。我有点不明白。我不需要任何格式,只需要来自单元格(D28:D40)的数据,单元格之间有简单的换行符。是否使用了getValue()或getValues()的复数形式?是的,这很有效。谢谢你!文本现在填充到电子邮件正文(以字符串形式),并用逗号分隔电子表格的每一行。用换行符而不是逗号格式化需要HTML模板…正确吗?