google-apps-script - 从 base64 图像 URL 为 Google Apps Script MailApp 创建一个 inlineImage blob?
问题描述
我有一个内置在 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)个字符会删除标题,因此它只是图像数据。然而,这会导致脚本失败。(注释掉这一部分可以让脚本的其余部分运行良好。)
我的定义有什么错误?
注意:我已经查看了如何使用 MailApp 在电子邮件中包含内联图像。我的问题有点不同,因为在那篇文章中,用户正在从网络上获取 URL。这是我正在使用的 data: URI。
解决方案
嗯,$%&$#。现在我觉得很笨。因此,我在其他地方看到的一个脚本创建了一个 newBlob(),然后在创建后设置参数。
原来该Utilities.newBlob()
函数不喜欢没有参数的创建。
把它放在一个声明中:
var userImgBlob = Utilities.newBlob(Utilities.base64Decode(imgTxt.slice(23)),"image/jpeg","userImgBlob");
和繁荣 - 鲍勃是你的叔叔。
参考: 类实用程序 - 应用程序脚本
推荐阅读
- javascript - 为什么div在父div之外?使用反应
- amazon-web-services - 当我尝试在本地 DynamoDB 上启用“生存时间”时出错
- java - 如何在 jenkin Linux 服务器中执行 chrome 驱动程序 exe 文件
- google-analytics - 谷歌分析迁移到 Firebase
- windows - 退出状态-3221225477-in-terminal-in-golang
- javascript - 使用node.js进行excel比较
- grafana - 如何重置 grafana 的管理员密码(由 helm 安装)
- android-recyclerview - Recyclerview 未显示数据。我的代码中缺少某些内容
- mysql - MYSQL_ROOT_PASSWORD 已设置但在 docker 容器中获取“用户'root'@'localhost'的访问被拒绝(使用密码:YES)”
- flask - 找不到包 flask_mysqldb