我有一個用於網頁應用的函數,可以複製模板,它接收模板的名稱和模板的id作為參數。
程式碼.gs
#函數generate_(idTemplate, 名稱) {
var template = DriveApp.getFileById(idTemplate); var folder = '文件夹id'; var copyName = name + "-" + CurrentDate;// 添加创建日期 var copy; try { copy = template.makeCopy(copyName, folder); } catch (e) { Logger.log(e.stack); } var nameF = copy.getName(); var linkF = copy.getUrl() Logger.log(nameF,linkF) return getFile(nameF,linkF) // 这些值是我想要传递给客户端的。 }
這個函數是我用來將複製的名稱和URL傳遞給客戶端的。我知道在JavaScript中要傳回多個參數,必須透過陣列來實現。
function getFile(nameF,linkF){ var array = [nameF,linkF]; return array; }
這是我用來嘗試檢索產生的複製資料的客戶端腳本:
HTML
<script> function getValues(){ google.script.run.withSuccessHandler(copyValues).getFile(); } function copyValues(values){ var nameF = values[0]; var urlF = values[1]; console.log(values); console.log(nameF); console.log(urlF); console.log("值成功传递了"); } </script>
我使用一個按鈕來測試是否正確傳遞,但是我無法顯示這些數據,瀏覽器控制台顯示日誌時顯示null。
我可能做錯了什麼?在客戶端我已經嘗試了google.script.run.withSuccessHandler(copyValues).getFile(nameF,linkF);
,但沒有運作。
<button id="btn" onclick="create(); getValues();"
這是按鈕,它觸發了create()
,用於建立複製的腳本,以及getValues();
,用於取得該複製的名稱和URL。模板複製成功創建,但文件名和URL未在客戶端檢索。
試試這個:
GS:
HTML:
Dialog:
這是一個獲取文件資訊的範例。
如下截圖所示,當我點擊按鈕時,檔案名稱和URL將顯示在輸入框中。
Code.gs
#HTML_Test.html