创建没有BOM谷歌应用程序脚本的文本文件



我正试图在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的文本数据。请小心
  • 在这种情况下,请声明aFileNamejobFolder的值。请小心
  • 在这个修改后的脚本中,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);

最新更新