我正试图在Google Drive中创建一个文本文件,该文件将由另一个程序读取以实现自动化。然而,如果我通过谷歌脚本创建文本文件,文本将具有BOM,这使得自动化非常不可靠。我目前正在使用
var textFile = jobFolder.createFile(aFileName, fileContent,MimeType.PLAIN_TEXT)
var textFile = jobFolder.createFile(aFileName, fileContent)
用谷歌应用程序脚本创建没有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时,请查看字节顺序标记(BOM(的wiki。通过这个wiki,可以确认最前面的字符
参考文献:
- 字节顺序标记(BOM(
- newBlob(数据,内容类型,名称(
- createFile(blob(
添加:
根据您的以下回复,
我在这一行有错误var[,,,…newData]=Utilities.newBlob(fileContent(.getBytes((;。也许是因为我的谷歌应用程序脚本是旧版本。我能试试这个吗?
我知道您没有使用V8运行时。在这种情况下,下面的脚本如何?
示例脚本:
var newData = Utilities.newBlob(fileContent).getBytes();
newData.splice(0, 3);
var blob = Utilities.newBlob(newData, MimeType.PLAIN_TEXT, aFileName);
var textFile = jobFolder.createFile(blob);