使用Google Spreadsheets上的MailApp.sendEmail的动态超链接

时间:2018-03-31 00:38:20

标签: google-apps-script

我正在尝试编写一个简单的提醒电子表格,该电子表格应该按月启动。

Here就是一个例子。

我们的想法是在此工作表上使用查询/导入范围公式,因此脚本使用的范围将自动更新。

关于脚本,我发现了一篇有趣的文章,它使用工作表范围并向每个人发送自定义消息:

function EnviarLembretes() {
    var sheet = SpreadsheetApp.getActiveSheet();
    var PrimeiraLinha = 2;
    var NumLinhas = sheet.getRange(2, 4).getValue();
    var Lista = sheet.getRange(PrimeiraLinha, 1, NumLinhas, 3);
    var DadosLista = Lista.getValues();
      for(i in DadosLista){
        var row = DadosLista [i];
        var email = row [0];
        var subject = row [1];
        var message = row [2];

        MailApp.sendEmail(email, subject, message);
      }
}

像魅力一样工作,但这并不是我想要的。

不知道它是否可能(可能是HTML),但我想发送一个图像(对每个人都一样),并在其上嵌入自定义超链接。因此,我会调整公式,只需从工作表中捕获一个电子邮件地址和要添加到图像的超链接。

另外,我有点担心" SpreadsheetApp.getActiveSheet();"这是在脚本中使用的。由于脚本将每月触发并且工作表自动更新,我不会假装再打开文件。因此,我正在寻找一种认证活动工作表的方法,这是我可以通过此帖子中分享的网址访问的方式。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

我还没有完全测试过这个脚本,但它应该可以工作。

这会将存储在Google云端硬盘中的内嵌图片发送到电子邮件地址,并从表格的C栏检索到超链接。

使用.getSheetByName('Página1');可确保脚本始终查找此工作表以查找信息。

可以通过更改<img>标记中的宽度和高度值来设置图像的大小。

function EnviarLembretes() {
    var sheet = SpreadsheetApp.getActiveSpreadsheet.getSheetByName('Página1');

    var Lista = sheet.getRange(2, 1, sheet.getLastRow(), 3);
    var DadosLista = Lista.getValues();

    var image = DriveApp.getFileById("-------"); //Get the image from Google Drive file ID
    var blob = image.getBlob(); //Get the image blob
    var imageBlob = Utilities.base64EncodeWebSafe(blob.getBytes()); //Re-encode the image for sending

    for (var i = 0; i < DadosLista.length; i++) { // I would NOT use a for in loop for this task - you chould change to for( ; ; )

        var body = //Create the body of the message here in HTML format
            '<body>'
             +
            '<p><a href="' + DadosLista[i][3] + '"><img src="cid:imageKey" /width="300" height="300"></a></p>'
             +
            '<body>';

        MailApp.sendEmail({
            to : DadosLista[i][0],
            subject : DadosLista[i][0],
            htmlBody : body,
            inlineImages : {
                imageKey : blob
            }
        });

    }
}