如何 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/appendmyString
到file
?
您似乎正在尝试向 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);
这是一个可以尝试的建议。还没有测试过。不知道它是否会起作用,但没有其他人回答,所以尝试一下也无妨。我会留给你去尝试,然后告诉我它是否有效。
此代码确实有效,除了这部分 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/appendmyString
到file
?
您似乎正在尝试向 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);
这是一个可以尝试的建议。还没有测试过。不知道它是否会起作用,但没有其他人回答,所以尝试一下也无妨。我会留给你去尝试,然后告诉我它是否有效。