DriveApp.createFile(e.parameter.blob);不执行

DriveApp.createFile( e.parameter.blob); Not executing

在 google 应用程序脚本中,以下行引发错误:

DriveApp.createFile( e.parameter.fileupBlob);

其中 fileupBlob 是表单中存储了 BLOB 的隐藏字段。

执行时抛出错误:

Cannot find method createFile((class)). (line 23, file "Code", project "saving")

DriveApp.createFile 的参数必须是一个 blob。 e.parameter.varName返回的值是一个字符串。

因此出现错误。从表单返回 blob 的唯一情况是当您使用文件上传小部件时,隐藏小部件的行为类似于文本小部件。

您需要创建如下所示的 blob。假设您传递了一个有效的 blob。编辑:如果驱动器难以从 blob 中确定它是什么类型的文件,您可以自己提供该信息。另一个想法是 blob 可能是 base64 编码的。在创建新的 blob 之前,您可能必须对其进行解码。你还没有发布任何代码,所以我不知道发生了什么。

var name = "fileName.png";
var contentType = "image/png";
var fileBlob = Utilities.newBlob(e.parameter.fileupBlob, contentType, name);
DriveApp.createFile(fileBlob);

知道了! javascript 库正在返回字符串 dataURI,我在 jquery:

中替换了 dataURI 的第一部分
strDataURI=strDataURI.replace("data:image/png;base64,", "");
document.getElementById("blobobj").value = strDataURI;

然后我就可以创建图像了

var str=Utilities.base64Decode(e.blobobj);
var fileBlob = Utilities.newBlob(str).setContentType('image/png');

这样做

let imageBlob = images[0].getBlob();
let name = 'fileName.jpeg';
let contentType = 'image/jpeg';
let fileBlob = Utilities.newBlob(imageBlob.getBytes(), contentType, name);
let imageFile = folder.createFile(fileBlob).setName('ravgeet.jpeg');