第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Google Script - 表單:以編程方式處理上傳字段:如何獲取多個鏈接?

Google Script - 表單:以編程方式處理上傳字段:如何獲取多個鏈接?

在谷歌腳本中使用上傳字段時,我遇到了兩個問題。我會盡力描述我的問題。我有一個表單,在發(fā)送時設(shè)置了觸發(fā)器。此觸發(fā)器調(diào)用一個主函數(shù),而主函數(shù)又調(diào)用其他一些函數(shù)。其中一個子功能創(chuàng)建一個文檔,然后在特定工作表上設(shè)置其鏈接。主函數(shù)在以下行中獲取項目響應(yīng)對象:var responses = e.response.getItemResponses();然后,此對象作為參數(shù)傳遞給 Doc 函數(shù):generateBriefingPDF(classID, briefingSheet, responses, timestamp);ClassID 是一個簡單的整數(shù)屬性,briefingSheet 是我從中獲取的目標(biāo)工作表和時間戳:var timestamp = e.response.getTimestamp();在 generateBriefingPDF 腳本中,我得到響應(yīng)并將它們分配給更易于閱讀的變量,如下所示:var name = responses[0].getResponse();var subject = responses[1].getResponse();var content = responses[2].getResponse();var level = responses[3].getResponse();var uploads = responses[4].getResponse();然后,我在用帶有變量的模板復(fù)制的新文檔中替換文本“變量” 。我也將它們設(shè)置在工作表中?!吧蟼鳌眝ar 是文件的 ID,因此我使用以下方法將其轉(zhuǎn)換為鏈接:uploads = DriveApp.getFileById(uploads).getUrl();這很好用。除了 response[4] 中的“uploads”變量外,它是一個上傳字段。發(fā)生以下情況:當(dāng)什么都沒有上傳時:變量是undefined,所以它不能運(yùn)行屬性“getResponse”。TypeError: Cannot read property 'getResponse' of undefined我在 Stackdriver 日志中收到錯誤。我試圖用以下幾行檢查是否未定義,但都沒有用:if(uploads !== undefined) if(typeof uploads !== "undefined")上傳一個文件:一切正常。上傳了多個文件:我在嘗試通過 ID 獲取文件時出錯(當(dāng)然):Exception: Unexpected error while getting the method or property getFileById on object DriveApp. 當(dāng)我沒有將 ID 轉(zhuǎn)換為鏈接的行時,ID 在doc 文件,但只有第一個出現(xiàn)在工作表中。我能做些什么來解決這兩個問題?
查看完整描述

1 回答

?
慕娘9325324

TA貢獻(xiàn)1783條經(jīng)驗 獲得超4個贊

我相信你的目標(biāo)如下。

  • 您想針對使用 Google 表單上傳一個文件和/或多個文件的情況修改您的腳本。

修改點(diǎn):

根據(jù)您的腳本,我認(rèn)為您的腳本可能是 Google Form 的容器綁定腳本。從 中More than one file is uploaded,我認(rèn)為uploadsofvar uploads = responses[4].getResponse()是一個包含上傳文件的文件 ID 的數(shù)組。在這種情況下,responses[4]每種情況如下。

  • 當(dāng)文件未上傳時,responses[4]undefined.

    • 這在你的問題中已經(jīng)提到了。

  • 當(dāng)一個文件和/或多個文件上傳時,responses[4]是ItemResponse的對象,responses[4].getResponse()是一個包含上傳文件的文件ID的數(shù)組。

    • 上傳一個文件時,var uploads = responses[4].getResponse()就像["###fileId###"]. 在這種情況下,DriveApp.getFileById(uploads)有效。我認(rèn)為這uploads.toString()可能用于這種情況。但是,當(dāng)上傳多個文件時,文件 ID 不存在。由此,錯誤發(fā)生。

    • 關(guān)于 中的問題More than one file is uploaded,我認(rèn)為這是您問題的原因。

我認(rèn)為為了實(shí)現(xiàn)你的目標(biāo),可以使用上述情況。當(dāng)你的腳本修改后,就變成了下面這樣。

修改腳本:

從:

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(",");

}

筆記:

在這個修改中,當(dāng)一個文件被上傳時,uploads就是一個URL。例如,當(dāng)上傳 2 個文件時,uploads是一個包含 2 個 URL 的字符串值,例如URL1,URL2. 如果想作為數(shù)組使用,請修改為uploads = responses[4].getResponse().map(id => DriveApp.getFileById(id).getUrl()).

當(dāng)沒有文件上傳時,uploads是"".


查看完整回答
反對 回復(fù) 2023-05-11
  • 1 回答
  • 0 關(guān)注
  • 155 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號