如何 add/append 字符串在 Google Apps 脚本中变成 blob(Google 驱动器 API)

How to add/append string to blob in Google Apps Script (Google Drive API)

此代码确实有效,除了这部分 Drive.Files.update(thefile, theFileID, updatedBlob);

var folder = DriveApp.getFolderById("0B0RcUNcUERU5MGpIaEXXXXXXXX");
var file = DriveApp.getFileById("NcUERXXXXXXXXERU5UWQUTZKY2X2"); 
var file2 = DriveApp.getFileById("NcUERXXXXXXXXERU5UWDDDDDDD2"); 

var myString = "sometext";
var updatedBlob = file.getBlob() + myString;

var myFileName = "StringAddedFile.mp4";  
var thefile = {
  title: myFileName,
  mimeType: 'video/mp4'
};

var allFilesByName = folder.getFilesByName(myFileName);
while (allFilesByName.hasNext()) {
  var thisFile = allFilesByName.next();
  var theFileID = thisFile.getId();
  var myVar = Drive.Files.update(thefile, theFileID, updatedBlob);
};

我试过:

file.getBlob() + myString;
file.getBlob().getDataAsString() + myString;
file.getBlob().getDataAsString() + file2.getBlob().getDataAsString();
file.getAs() + file2.getAs();
file.getBlob() + file2.getBlob();

...

收到此错误消息:"The mediaData parameter only supports Blob types for upload."

我怎样才能add/appendmyStringfile

您似乎正在尝试向 mimeType: 'video/mp4' 文件中添加内容。看起来您需要从字符串创建一个 blob。您可以使用实用程序服务来执行此操作。

对于字符串

  • 创建一个 base 64 编码的字符串
  • 将字符串编码为字节数组

对于文件

  • 获取文件为 blob
  • 将 blob 转换为字节

合并

  • 合并两个文件的字节
  • 用另一个 blob 将文件更新为 blob

代码:

var myString = "sometext";
var encoded = Utilities.base64Encode(myString);
var byteDataArray = Utilities.base64Decode(encoded);

var file = DriveApp.getFileById("File ID here");
var fileAsBlob = file.getBlob();
var fileAsBytes = fileAsBlob.getBytes();

var combinedBytes = byteDataArray.concat(fileAsBytes);
var allBytesAsBlob = Utilities.newBlob(combinedBytes);

var updatedBlob = Drive.Files.update(thefile, theFileID, allBytesAsBlob);

这是一个可以尝试的建议。还没有测试过。不知道它是否会起作用,但没有其他人回答,所以尝试一下也无妨。我会留给你去尝试,然后告诉我它是否有效。