1 回答

TA貢獻1783條經驗 獲得超4個贊
我相信你的目標如下。
您想針對使用 Google 表單上傳一個文件和/或多個文件的情況修改您的腳本。
修改點:
根據您的腳本,我認為您的腳本可能是 Google Form 的容器綁定腳本。從 中More than one file is uploaded
,我認為uploads
ofvar uploads = responses[4].getResponse()
是一個包含上傳文件的文件 ID 的數組。在這種情況下,responses[4]
每種情況如下。
當文件未上傳時,
responses[4]
是undefined
.這在你的問題中已經提到了。
當一個文件和/或多個文件上傳時,
responses[4]
是ItemResponse的對象,responses[4].getResponse()
是一個包含上傳文件的文件ID的數組。上傳一個文件時,
var uploads = responses[4].getResponse()
就像["###fileId###"]
. 在這種情況下,DriveApp.getFileById(uploads)
有效。我認為這uploads.toString()
可能用于這種情況。但是,當上傳多個文件時,文件 ID 不存在。由此,錯誤發生。關于 中的問題
More than one file is uploaded
,我認為這是您問題的原因。
我認為為了實現你的目標,可以使用上述情況。當你的腳本修改后,就變成了下面這樣。
修改腳本:
從:
var uploads = responses[4].getResponse();
到:
var uploads = "";
if (responses[4]) { // or if(uploads !== undefined) if(typeof uploads !== "undefined")
uploads = responses[4].getResponse().map(id => DriveApp.getFileById(id).getUrl()).join(",");
}
筆記:
在這個修改中,當一個文件被上傳時,uploads就是一個URL。例如,當上傳 2 個文件時,uploads是一個包含 2 個 URL 的字符串值,例如URL1,URL2. 如果想作為數組使用,請修改為uploads = responses[4].getResponse().map(id => DriveApp.getFileById(id).getUrl()).
當沒有文件上傳時,uploads是"".
添加回答
舉報