我正在做一個專案,我從一個html表單中獲取輸入,并在google sheet中提交它們。它作業正常,沒有錯誤。所以我想添加一個函式,在服務器端出錯的情況下,用戶可以重新提交資料。 問題是,當我呼叫提交資料的同一個函式時(作業),它似乎沒有反應。我正在發送相同的資料陣列,但它沒有回傳任何服務器回應。如果我重繪 整個頁面,它又能作業了,只是它不允許我在一個會話中運行同一個函式兩次。
Html:
google.script.run. withSuccessHandler(onSuccess).withFailureHandler(onFailure).addRecord(rows)。
GAS:
function doGet(request) {
return HtmlService.createHtmlOutputFromFile('index')。
}
//division,block,ward,stab,committee,designation,name,phone,email。
function addRecord(rows) {
var url = 'https://docs.google.com/spreadsheets/d/-myProjectID-/edit#gid=0'/span>;
var ss = SpreadsheetApp.openByUrl(url)。
var webAppSheet = ss.getSheetByName("FORM DATA")。
var row = rows.length;
var column = rows[0].length。
//LockService.getScriptLock.waitLock(10000);
//var lock = LockService.getScriptLock();
//lock.waitLock(10000); //防止同時創建兩個會話。
try {
webAppSheet.getRange(webAppSheet. getLastRow() 1, 1, row, column).setValues(rows)。
//lock.releaseLock();.
return "ok"
} catch (ex) {
lock.releaseLock()。
return "Error"。
}
}
function getScriptURL() {
return ScriptApp.getService().getUrl()。
為了重試,我運行相同的函式 "addRecord()",并傳遞相同的陣列 "rows[]"。 誰能指出我哪里做錯了,或者是GAS中的某些特殊屬性使我不能做其他事情。
uj5u.com熱心網友回復:
我會嘗試這樣的做法:
gs。
function addRecord(rows){
const ss = SpreadsheetApp.openById(myProjectId)。
const sh = ss.getSheetByName("FORM DATA")。
sh.getRange(sh.getLastRow() 1, 1, rows. length, rows[0].length).setValues(rows)。
return "Ok"。
}
js:
function dontknowname() {
/disable send button here
google.script.run.
.withSuccessHandler(() => '啟用這里的發送按鈕')
.addRecords(rows)。
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/319370.html
標籤:
