[英]How to convert bloburl/objecturl for Google Apps Script createFile() API?
下面的代码包含createFile() API,它需要一个 object(此处命名为“文件”)。 通过这种方式,文件可以保存在一些谷歌驱动器文件夹中
function uploadFiles(data)
{
var file = data;
var folder = DriveApp.getFolderById('1UWGb5Mzr9VzPUuQTr9CWD7EMYNEAzyuC');
var createFile = folder.createFile(file);
return createFile.getUrl();
}
现在我想把这个 function 结合到另一个网页上。 但是,另一个网页中的脚本如下:
for (clipIndex = 0; clipIndex < unrollWordCounts(getAllWantedWords()).length; clipIndex++) {
try {
var clip = allClips[clipIndex];
clip.style.display = 'None';
var audioBlobUrl = clip.querySelector('audio').src;
var word = clip.querySelector('p').innerText;
var filename = word + '_' + Date.now() + '.ogg';
saveAs(audioBlobUrl, filename);
google.script.run.withSuccessHandler(onSuccess).uploadFiles(audioBlobUrl);
}
我要上传到谷歌驱动器的数据是audioBlobUrl 。 但是,app 脚本的createFile()需要一个文件。 似乎audioBlobUrl不是文件。 我应该如何修改代码,以便它可以将预期的数据传递给谷歌createFile()以实现我的目标?
从您的回复中,我确认您的audioBlobUrl
类似于blob:https://n-gtuqz5opiogjdwjt5bm3j7sgiq5rl4g7osg6piq-0lu-script.googleusercontent.com/a9f62d15-c7c1-41c0-ac5d-0a05dcb01fa6
在这种情况下,很遗憾,这个 URL 不能直接使用。 因此,为了在 Google Apps Script 中使用它,需要将其转换为数据。 在这个答案中,我想提出将 URL 转换为数据的示例脚本(在这种情况下,URL 被转换为字节数组。)。 这样,可以在 Google Apps Script 中对数据进行解码,并将数据保存为文件。
作为一个简单的示例脚本,当使用您的audioBlobUrl
和filename
时,请使用以下脚本。
fetch(audioBlobUrl).then(r => r.blob()).then(blob => {
var fr = new FileReader;
fr.onload = f => {
var obj = {data: [...new Int8Array(f.target.result)], mimeType: blob.type, filename};
google.script.run.withSuccessHandler(onSuccess).uploadFiles(obj);
};
fr.readAsArrayBuffer(blob);
});
在 Google Apps 脚本端,请按如下方式修改uploadFiles
。
function uploadFiles({data, mimeType, filename}) {
var file = Utilities.newBlob(data, mimeType, filename || "sampleFilename");
var folder = DriveApp.getFolderById('1UWGb5Mzr9VzPUuQTr9CWD7EMYNEAzyuC');
var createFile = folder.createFile(file);
return createFile.getUrl();
}
google.script.run
与异步进程一起运行。 似乎google.script.run
在循环中使用。 虽然我不确定你的整个脚本,如果异步进程会成为你的新问题,请修改它。
此修改后的脚本假设您的audioBlobUrl
类似于blob:https://n-gtuqz5opiogjdwjt5bm3j7sgiq5rl4g7osg6piq-0lu-script.googleusercontent.com/a9f62d15-c7c1-41c0-ac5d-0a05dcb01fa6
从您的回复请注意这一点。
从你的问题我不确定你的实际情况。 当您将您的脚本用作 Web 应用程序时,当您修改脚本时,请将最新的脚本反映到 Web 应用程序中。 请注意这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.