从应用程序的Blob中删除BOM的方法脚本电子邮件附件



我正在使用谷歌应用程序脚本从谷歌表单中发送电子邮件。我发送了一个小的CSV文件,它确实有效。但是,当我在Microsoft Excel中打开附件时,单元格A1中有几个奇怪的字符。当我在文本编辑器中打开时,它看起来很好。

我在Mac上工作,所以我在Xcode中使用了十六进制编辑器,我看到了三个奇怪的初始字符EF BB BF。我猜这是字节顺序标记。

这可能看起来微不足道,但我正在自动生成这些,收件人希望自动处理它们,所以这个小问题导致了问题。

有没有一种方法可以在没有BOM的情况下做到这一点?也许有一些更简单的方式来制作附件?

这是我的代码:

  var htmlBody = HtmlService.createHtmlOutputFromFile('message'),
    blob = Utilities.newBlob([]);
    blob.setDataFromString(csvdata, 'ASCII');
    blob.setContentType('text/csv');
    blob.setName('test.csv');
    MailApp.sendEmail({
      to: email,
      subject: 'Test',
      htmlBody: htmlBody,
      attachments: [blob]
   });

我怀疑您看到的额外字符一定在csvdata变量中。我几乎完全复制了你的代码,但用硬编码的字符串替换了csvdata,它给我发了一封带有test.csv的电子邮件,作为附件,没有你描述的前面的字符。

如果您直接通过脚本编辑器运行下面的函数,它能工作吗?

function test() {
   var htmlBody = HtmlService.createHtmlOutput('message');
   var blob = Utilities.newBlob([]);
   blob.setDataFromString('hi there', 'ASCII');
   blob.setContentType('text/csv');
   blob.setName('test.csv');
   MailApp.sendEmail({
     to: 'YOUREMAIL@gmail.com',
     subject: 'Test',
     htmlBody: htmlBody,
     attachments: [blob]
   });
}

最新更新