创建没有 BOM 谷歌应用程序脚本的文本文件 来自:致:注意:参考:示例脚本:

问题描述

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...