Html Google sheets |将单元格范围发送到电子邮件正文

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

我目前有一个脚本,引用一个单元格(D28)并将其放在电子邮件正文中。是否可以引用一系列单元格?我希望将单元格(D28:D40)发送到电子邮件正文

非常感谢您的帮助

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模板…正确吗?