我有以下作業代碼:
google.script.run.withSuccessHandler(getSelectOption).getSpreadsheetRange('16EBPA1TeOoMgn9fBmCJN8LwIMEGEYBSEvv17','OLT35A006T_PferdNameRange');
除了結果陣列,getSpreadsheetRange我想給getSelectOption. 我怎樣才能做到這一點?
uj5u.com熱心網友回復:
在你的情況下,如何使用withUserObject(object)?這樣,您可以在函式中檢索附加值getSelectOption。當你的腳本被修改時,它變成如下。
修改后的腳本:
google.script.run
.withUserObject("sample value")
.withSuccessHandler(getSelectOption)
.getSpreadsheetRange('16EBPA1TeOoMgn9fBmCJN8LwIMEGEYBSEvv17','OLT35A006T_PferdNameRange');
// By above modified script, you can retrieve `sample value` at the 2nd argument of `getSelectOption`.
function getSelectOption(a, b) {
console.log(a)
console.log(b)
}
通過上述修改后的腳本,您可以
sample value在getSelectOption. 的第一個引數getSelectOption來自getSpreadsheetRange。或者,我認為@doubleunary的評論中的建議也很有用。
或者,您也可以
getSelectOption按如下方式使用該功能。在這種情況下,可以將 2 個引數作為陣列檢索。function getSelectOption(...a) { console.log(a[0]) // Return from "getSpreadsheetRange" console.log(a[1]) // Value from "withUserObject" }
參考:
- withUserObject(物件)
編輯:
來自以下 doubleunary 的評論
我閱讀問題的方式是 OP 希望從服務器端 getSpreadsheetRange() 回傳兩個值到客戶端成功處理程式 getSelectOption()。當您呼叫 withUserObject() 時,服務器端函式永遠不會看到用戶物件。當成功處理程式被呼叫時,它接收未更改的服務器端用戶物件。要從客戶端回傳兩個值,需要修改客戶端函式,使其回傳復合物件,例如陣列或鍵值對物件。
我想我可能誤解了 OP 的目標。因此,從評論中,我了解到什么時候getSpreadsheetRange()回傳,OP 想再添加一個引數并希望在getSelectOption().
在這種情況下,我同意 doubleunary 的評論,并提出以下修改。
Google Apps 腳本方面:
function getSpreadsheetRange(a, b) {
// do something.
return {arg1: "value1", arg2: "value2"}; // You can return the value as an object.
}
Javascript方面:
google.script.run
.withSuccessHandler(getSelectOption)
.getSpreadsheetRange('16EBPA1TeOoMgn9fBmCJN8LwIMEGEYBSEvv17','OLT35A006T_PferdNameRange');
function getSelectOption({arg1, arg2}) {
console.log(arg1) // value1
console.log(arg2) // value2
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/325137.html
