【问题标题】:Creating an inlineImage blob for Google Apps Script MailApp from a base64 image URL?从 base64 图像 URL 为 Google Apps Script MailApp 创建一个 inlineImage blob?
【发布时间】:2021-09-10 16:55:06
【问题描述】:

我有一个内置在 Google Apps 脚本中的登录表单,可将​​数据发送到 Google 表格中的一行。但是,如果用户尝试登录不在预设列表中,它会向店员发送一封电子邮件。登录电脑有网络摄像头,GAS表格可以激活网络摄像头并拍照;它返回图像数据的base64编码字符串(jpeg格式)。

我正在努力让 GAS 创建适当的 Blob,以将其作为 inlineImage 添加到电子邮件中。

      var userImgBlob = Utilities.newBlob()
        .setContentType("image/jpeg")
        .setDataFromString(Utilities.base64Decode(imgTxt.slice(23)))
        .setName("userImgBlob");

imgTxt 包含数据:URI,进来像:

data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgM....

对前 24 个(0 到 23)个字符进行切片会删除标题,使其仅是图像数据。然而,这会导致脚本失败。 (注释掉这一部分可以让脚本的其余部分运行良好。)

我的定义有什么错误?

注意:我已经看过How to include inline images in email using MailApp。我的问题有点不同,因为在那篇文章中,用户正在从网络上获取 URL。这是我正在使用的 data: URI。

【问题讨论】:

标签: google-apps-script google-sheets base64


【解决方案1】:

嗯,$%&$#。现在我觉得很笨。所以我在别处看到的一个脚本创建了一个 newBlob(),然后在创建后设置参数。

原来Utilities.newBlob() 函数不喜欢没有参数的创建。

把它放在一个声明中:

var userImgBlob = Utilities.newBlob(Utilities.base64Decode(imgTxt.slice(23)),"image/jpeg","userImgBlob");

然后繁荣 - Bob 是你的叔叔。

参考:Class Utilities - Apps Script

【讨论】:

    猜你喜欢
    • 2018-08-21
    • 1970-01-01
    • 2019-11-18
    • 1970-01-01
    • 2014-07-08
    • 2017-06-19
    • 2016-08-10
    • 2020-10-19
    • 1970-01-01
    相关资源
    最近更新 更多