excel - 如何将图像附件发送到电子邮件

标签 excel google-apps-script

因为我创建了要扫描的二维码列表,然后我想使用 Google 应用脚本将此图像发送到电子邮件。
当前结果
图片未发送到 gmail。
代码

 function sendEmail(sheetName = "emails") {
  SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName).activate();
  var spreedsheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var lastRow = spreedsheet.getLastRow();
  //var ssa = SpreadSheetApp().getSheetByName(sheetName);  // spread sheet object

const messageBody = "Dear receiver, We would like to invite you on upcoming seminar please use this link {actual link} and show receiptionis this bar code {actual code}"
const subjectText = "Seminar invitation"

 // loop rows or spread sheet
  for (var i=2; i<= lastRow; i++) {
    var receiverName =  spreedsheet.getRange(i, 1).getValue();
    var receiverEmail = spreedsheet.getRange(i, 2).getValue();
    var seminarLink =  spreedsheet.getRange(i, 3).getValue();
    var barcode =  spreedsheet.getRange(i, 4).getBlob();
    var msgBdy = messageBody.replace("receiver",receiverName).replace("{actual link}", seminarLink);

      var photoBlob = barcode
     MailApp.sendEmail({
                to: receiverEmail,
                subject: subjectText,
                htmlBody: messageBody + "<br /><img src='cid:qrCode'>",
                inlineImages: { qrCode: photoBlob }
        });  
 }

}
enter image description here

最佳答案

从您的以下回复中,

images are created from =IMAGE("chart.googleapis.com/…) with that google sheet excel


在这种情况下,我认为您的目标可以使用 Google Apps 脚本来实现。
当我看到你的剧本时,getValue()在循环中使用。在这种情况下,处理成本会变高。在这次修改中,也修改了这个问题。
修改后的脚本:
function sendEmail(sheetName = "emails") {
  var spreedsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
  var lastRow = spreedsheet.getLastRow();
  const messageBody = "Dear receiver, We would like to invite you on upcoming seminar please use this link {actual link} and show receiptionis this bar code {actual code}";
  const subjectText = "Seminar invitation";
  const range = spreedsheet.getRange("A2:D" + lastRow);
  const values = range.getValues();
  const formulas = range.getFormulas();
  values.forEach(([receiverName, receiverEmail, seminarLink], i) => {
    const url = formulas[i][3].split('"')[1];
    const photoBlob = UrlFetchApp.fetch(url).getBlob();
    var msgBdy = messageBody.replace("receiver", receiverName).replace("{actual link}", seminarLink);
    MailApp.sendEmail({
      to: receiverEmail,
      subject: subjectText,
      htmlBody: messageBody + "<br /><img src='cid:qrCode'>",
      inlineImages: { qrCode: photoBlob }
    });
  });
}
  • 运行此脚本时,将从工作表的“A2:D”中检索值。并且,从每一行中检索每个值。对于“D”列,从公式中检索 URL,并使用 UrlFetchApp 检索图像 blob。并且,这些值作为电子邮件发送。

  • 引用
  • forEach()
  • fetch(url, params)
  • 关于excel - 如何将图像附件发送到电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72403754/

    相关文章:

    Excel VBA表格滞后

    Excel 错误 1004 "Unable to get .... property of WorksheetFunction class"出现不一致

    excel - 重命名命名范围

    google-apps-script - 如何从 Google Apps 脚本的最后一行提取值

    javascript - 运行 Google 协作平台小部件的权限问题

    google-apps-script - 如何从一个 Google Apps 脚本调用另一个函数?

    excel - VBA .SetText 和 .PutInClipboard 在剪贴板中放置两个符号而不是所需的数据

    VBA根据单元格值删除行

    google-apps-script - 我将如何从解析的 json 对象中捕获和处理 "undefined"

    google-apps-script - 在谷歌脚本中测试背景颜色