首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Google应用程序脚本:发送电子邮件引用图像

Google应用程序脚本:发送电子邮件引用图像
EN

Stack Overflow用户
提问于 2022-01-19 22:17:32
回答 2查看 679关注 0票数 -1

例如,我使用发送电子邮件,电子邮件地址、电子邮件内容来自Google (sheet1),

只是一个代码示例(如果Google驱动器中的页脚图像)

代码语言:javascript
运行
复制
function sendEmail() {
  
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  
  var cell = ss.getActiveCell();
  var row = cell.getRow();
  var column = cell.getColumn();
  var lr = ss.getLastRow();

  for (var i = 2;i<=lr;i++){
  var assignmentName = sheet.getRange(i, 2).getValue();
  var emailAddress = sheet.getRange(i, 1).getValue();
  
  var image1 = DriveApp.getFileById("fileID").getBlob();
  var message = "Hi Mr/Mrs,<br /><br />Bellow is your info... <br><img src='cid:Footerimage'> <br>";

  
  GmailApp.sendEmail(emailAddress,"A Test Email", message, 
   {
     htmlBody: message,
     inlineImages:
      {
        Footerimage: image1
      }
    }
   );
}

我的问题是,如果页脚图像来自同一个google (Sheet2)中的单元格,那么如何在我的google脚本中引用这个页脚图像。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-20 02:40:28

我相信你的目标如下。

  • 您希望从嵌入到单元格中的图像中检索图像数据。而且,您希望使用检索到的图像作为页脚发送电子邮件(在本例中,您希望使用该图像作为内联图像)。

问题和解决办法:

不幸的是,在当前阶段,还没有从嵌入到单元格中的图像中直接检索图像数据的方法。因此,在这种情况下,作为一种解决办法,我想使用我已经回答了这里的方法来提出一个示例脚本。

关于显示脚本,当在一个循环中使用getValue时,过程成本就会变得很高。当您使用一个映像时,不需要在循环中包含var image1 = DriveApp.getFileById("fileID").getBlob();

用法:

在这个解决方案中,为了从嵌入到单元格中的图像检索图像数据,使用了Google脚本库。

1.安装Google脚本库。

请安装Google脚本库。关于安装库的方法,您可以在这里上看到它。

2.样本脚本。

代码语言:javascript
运行
复制
function myFunction() {
  // Retrieve image data from the image embeded into a cell.
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const res = DocsServiceApp.openBySpreadsheetId(ss.getId()).getSheetByName("Sheet2").getImages();
  const obj = res.find(({ range }) => range.a1Notation == "A1");
  if (!obj) throw new Error("Image was not found.");
  const imageBlob = obj.image.blob;

  // Retrieve email addresses and send emails.
  const sheet = ss.getSheetByName("Sheet1");
  const values = sheet.getRange("A2:B" + sheet.getLastRow()).getValues();
  values.forEach(([emailAddress, assignmentName]) => {
    // In your showing script, "assignmentName" is not used. 
    const sampleBody = "A Test Email";
    const message = "Hi Mr/Mrs,<br /><br />Bellow is your info... <br><img src='cid:Footerimage'> <br>";
    GmailApp.sendEmail(emailAddress, "A Test Email", message, {
      htmlBody: message,
      inlineImages: { Footerimage: imageBlob }
    });
  });
}
  • 运行此脚本时,从"A1“的单元格"Sheet2”检索图像数据,并使用从"Sheet1“的"A”列检索的电子邮件地址发送电子邮件。当时,图像数据作为页脚被附加到电子邮件中,使用内联图像。
  • 从显示脚本中,message作为文本正文和HTML发送。请小心这个。

注意:

  • 在这个示例脚本中,它假设电子邮件地址被放置到"Sheet1“的列"A”中,而图像数据被放置到"Sheet2“的单元格"A1”中。当您更改此情况时,可能无法使用该脚本。请小心这件事。

参考文献:

票数 2
EN

Stack Overflow用户

发布于 2022-01-20 01:32:47

要发送html内容,您必须使用如下所示的参数:

代码语言:javascript
运行
复制
  GmailApp.sendEmail(emailAddress,"A Test Email", "",{htmlBody:message})

关于图像,您必须找到一种方法来调试它是如何从电子表格中产生的。也许它就像一个base64encoded,取决于此,我们可以帮助您。

直接使用单元格地址从电子表格中获取图像,如下面的getRange("A1").getValue()

使用IDE,检查是否有像getValueAsUrl()这样的方法可以帮助您解决问题。

另外,通过url将图像放入电子表格,而不是直接将其放入电子表格,又如何呢?这样,您就可以将该图像作为html对象发送。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70778465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档