问题描述
我正在尝试在 Google Drive 中创建一个文本文件,该文件将由另一个自动化程序读取。但是,如果我通过 Google Script 创建文本文件,该文本将包含 BOM,这使得自动化非常不可靠。 我目前正在使用
var textFile = jobFolder.createFile(aFileName,fileContent,MimeType.PLAIN_TEXT)
var textFile = jobFolder.createFile(aFileName,fileContent)
使用 Google App Script 创建没有 BOM 的文本文件的方法是什么?
解决方法
在 UTF-8 的 BOM 数据中,EF BB BF
被添加到数据的顶部。在这种情况下,我认为删除前 3 个字节是为了实现您的目标。那么下面的修改呢?
来自:
var textFile = jobFolder.createFile(aFileName,fileContent,MimeType.PLAIN_TEXT)
致:
var [,...newData] = Utilities.newBlob(fileContent).getBytes();
var blob = Utilities.newBlob(newData,MimeType.PLAIN_TEXT,aFileName);
var textFile = jobFolder.createFile(blob);
- 在本次修改中,假设
fileContent
为BOM的文本数据。请注意这一点。 - 在这种情况下,请声明
aFileName
和jobFolder
的值。请注意这一点。 - 在这个修改后的脚本中,
newData
是删除前 3 个字节的数据。
注意:
- 如果您的
fileContent
数据不是 UTF-8,请查看 Byte order mark (BOM) 的 wiki。从这个 wiki 可以确认排名靠前的字符。
参考:
添加:
从您的以下回复中,
我在这一行有错误 var [,...newData] = Utilities.newBlob(fileContent).getBytes();。也许是因为我的 Google App Script 是旧版本。我可以为此尝试什么?
我了解到您没有使用 V8 运行时。在这种情况下,下面的脚本如何?
示例脚本:
var newData = Utilities.newBlob(fileContent).getBytes();
newData.splice(0,3);
var blob = Utilities.newBlob(newData,aFileName);
var textFile = jobFolder.createFile(blob);