【问题标题】:Google app script: Send mail, inlineImage from js File谷歌应用脚​​本:从 js 文件发送邮件、inlineImage
【发布时间】:2018-10-01 09:33:59
【问题描述】:

我使用 google.script.run 在 google app 脚本中使用 MailApp API 并传递一个这样的邮件对象:

google.script.run.sendMail(mail);

邮件对象的结构如下:

  var mail = {
    to:"",
    cc:"",
    subject:"",
    htmlBody:"",
    inlineImages: inlineImages
  }

inlineImages 是一个 Javascript 对象,它将 key string 映射到来自 google ressources

图像数据 (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);
}

【问题讨论】:

  • 您能否告诉我们您是如何获得inlineImages 对象的。里面有什么谢谢
  • @JSmith 编辑完成。无论如何,我实际上是在驱动器上上传图像,然后使用 ID 获取图像 URL,这更容易。
  • 不确定是否理解整个过程,但您的最终对象是否像inlineImages: {variableName: imageObject}??
  • 是的,我有带有inlineImages{key: FileObject} 的对象映射图像,每个文件都有名称、上次更新、...属性。
  • creatImages中的事件对象到底是什么,如何触发这个函数?

标签: javascript google-apps-script web-applications


【解决方案1】:

FileObject 不是合法值。

合法参数和返回值是 JavaScript 原语,如 a
+ 号码,
+ 布尔值,
+ 字符串,或
+ null, 以及
+ 由基元、对象和数组组成的 JavaScript 对象和数组。
+ 页面内的表单元素作为参数也是合法的,但必须是函数的唯一参数,作为返回值是不合法的

通过上述限制从客户端到服务器的唯一方法是将文件对象转换为上述类型之一。我会选择表格:

如果您以表单元素作为参数调用服务器函数,则表单将成为单个对象,其中字段名称作为键,字段值作为值。这些值都被转换为字符串,除了 文件输入字段 的内容,它们成为 Blob 对象。

【讨论】:

  • 是的,事实上 reader.onloadend = function(e) { inlineImages['test'] = e.target.result;} 其中 e.target.result 是字符串格式的文件(带有文件名、类型和其他信息)。谢谢你,我会检查它的邮件附件
猜你喜欢
  • 1970-01-01
  • 2020-04-22
  • 2013-11-15
  • 1970-01-01
  • 1970-01-01
  • 2014-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多