从Blob for Apps脚本电子邮件附件中删除BOM的方法

时间:2014-09-01 03:42:51

标签: google-apps-script

我正在使用 Google Apps脚本从Google表格中发送电子邮件。我发送一个小的CSV文件,它实际上工作。但是,当我在Microsoft Excel中打开附件时,单元格A1中有几个奇怪的字符。当我在文本编辑器中打开时,它看起来很好。

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

这可能看似微不足道,但我自动生成这些,并且收件人希望自动处理它们,因此这个小问题导致了问题。

有没有方法可以在没有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]
   });

1 个答案:

答案 0 :(得分:0)

我怀疑你看到的额外字符必须在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]
   });
}