下面的代碼包含createFile() API,它需要一個物件(這里命名為“檔案”)。通過這種方式,檔案可以保存在一些谷歌驅動器檔案夾中
function uploadFiles(data)
{
var file = data;
var folder = DriveApp.getFolderById('1UWGb5Mzr9VzPUuQTr9CWD7EMYNEAzyuC');
var createFile = folder.createFile(file);
return createFile.getUrl();
}
現在我想將此功能結合到另一個網頁。但是,另一個網頁中的腳本如下:
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()以實作我的目標?
uj5u.com熱心網友回復:
從您的回復中,我確認您audioBlobUrl喜歡blob:https://n-gtuqz5opiogjdwjt5bm3j7sgiq5rl4g7osg6piq-0lu-script.googleusercontent.com/a9f62d15-c7c1-41c0-ac5d-0a05dcb01fa6。在這種情況下,很遺憾,這個 URL 不能直接使用。因此,為了在 Google Apps Script 中使用它,需要將其轉換為資料。在這個答案中,我想提出將 URL 轉換為資料的示例腳本(在這種情況下,URL 被轉換為位元組陣列。)。這樣,可以在 Google Apps Script 中對資料進行解碼,并將資料保存為檔案。
修改后的腳本:
Javascript方面:
作為一個簡單的示例腳本,當您使用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 腳本方面:
在 Google Apps Script 端,請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 應用程式中。請注意這一點。
參考:
- 獲取(網址)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/419479.html
標籤:
