Reputation: 2843
This code does work, except this part 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);
};
I have tried:
file.getBlob() + myString;
file.getBlob().getDataAsString() + myString;
file.getBlob().getDataAsString() + file2.getBlob().getDataAsString();
file.getAs() + file2.getAs();
file.getBlob() + file2.getBlob();
...
Getting this error message: "The mediaData parameter only supports Blob types for upload."
How can I add/append myString
to file
?
Upvotes: 4
Views: 6104
Reputation: 31300
It looks like you are trying to add something to a mimeType: 'video/mp4'
file. It looks like you need to create a blob from the string. You can use the Utilities service to do that.
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);
This is a suggestion to try. Haven't tested it. Don't know if it will work, but no-one else has answered, so can't hurt to try. I'll leave it up to you to try, and let me know if it works or not.
Upvotes: 4