javascript - 谷歌应用脚本:从 js 文件发送邮件、inlineImage
问题描述
我使用google.script.run在 google 应用程序脚本中使用MailApp API ,并传递这样的邮件对象:
google.script.run.sendMail(mail);
邮件对象的结构如下:
var mail = {
to:"",
cc:"",
subject:"",
htmlBody:"",
inlineImages: inlineImages
}
inlineImages是一个 Javascript 对象,它将键字符串映射到来自谷歌资源的图像数据 (BlobSource)
但是后来我在inlineImages中传递了File对象,但由于非法值,我得到了 Failed 。
编辑 :
我得到这样的inlineImages:
var inlineImages
function createImages(event) {
var file = event.target.files[0];
var key = "image"+Object.keys(inlineImages).length;
inlineImages[key] = file;
}
我也尝试获取 Image 对象:
function createImages(event) {
var file = event.target.files[0];
var key = "image"+Object.keys(inlineImages).length;
var reader = new FileReader();
reader.onload = function(e) {
var img = new Image();
img.src = e.target.result;
inlineImages[key] = img;
}
reader.readAsDataURL(file);
}
解决方案
FileObject
不是合法值。
合法参数和返回值是 JavaScript 原语,如
+ Number、
+ Boolean、
+ String 或
+ null,以及
由原语、对象和数组组成的 + JavaScript 对象和数组。
+ 页面内的表单元素作为参数也是合法的,但必须是函数的唯一参数,作为返回值是不合法的
您要通过上述从客户端到服务器的限制来获取文件的唯一方法是将 fileObject 转换为上述类型之一。我会选择表格:
如果您使用表单元素作为参数调用服务器函数,则表单将成为单个对象,其中字段名称作为键,字段值作为值。这些值都转换为字符串,除了文件输入字段的内容,它们成为Blob对象。
推荐阅读
- c# - UWP中数据网格的中心列标题
- node.js - 为什么在猫鼬中使用 populate() 时会收到强制转换错误?
- python - 出于某种原因,PyGame 物理模拟所有物体都以相同的速度移动
- angular - 如何获取使用 ngfor 循环创建的 html 元素
- dart - 在 dart 中使用 async/wait 不等待 http 包
- pytorch - 如何解决 PyTorch 训练期间的类不平衡问题
- javascript - Javascript 代码每 10 分钟运行一次并在加载后关闭调用的窗口
- php - 允许用户在不使用 3rd 方插件的情况下在 textarea 中添加 HTML
- c# - 在服务结构的不同端口上运行的多个红隼无状态服务实例
- reactjs - 每次我在类中的某处设置状态时都会触发 componentDidMount 吗?