我想在Apps Script中創建一個模式,用戶需要在輸入中輸入一個數字,當他點擊“搜索”按鈕時,參考這個數字的文本會寫在其他輸入中。
這是我的腳本(服務器端):
function include(filename){
return HtmlService.createHtmlOutputFromFile(filename).getContent();
}
function ajoutLigne() {
const classeur = SpreadsheetApp.getActiveSpreadsheet();
const feuille = classeur.getActiveSheet();
var widget;
widget = HtmlService.createTemplateFromFile("widget.html").evaluate();
ui.showModalDialog(widget, "Ajout d'une nouvelle ligne");
widget.setWidth(600);
widget.setHeight(600);
}
function getLibelle(codeArticle){
const classeur = SpreadsheetApp.getActiveSpreadsheet();
const feuille = classeur.getSheetByName("BASE ARTICLE");
var lastRow = feuille.getLastRow();
var tDonnees = feuille.getRange("B2:C" lastRow).getValues();
var nbDonnees = tDonnees.filter(String).length;
var result = "";
for (let i = 0; i < nbDonnees; i ){
if(tDonnees[i][0] == codeArticle){
result = tDonnees[i][1];
}
}
return result;
}
這是我的 HTML 小部件頁面:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<?!= include('JavaScript'); ?>
</head>
<body>
<p>Quel code article souhaitez-vous ajouter ?</p><input type="text" id="codeArticle"/>
<input type="button" value="Recherche" onclick="rechercheLibelle();">
<p> Libellé correspondant : </p>
<p id="libelle"></p>
</body>
</html>
這是我的 JavaScript 的 HTML 頁面:
<script>
function rechercheLibelle(){
var codeArticle = document.getElementById("codeArticle").value;
var test = google.script.run.getLibelle(codeArticle);
console.log(test);
document.getElementById("libelle").innerHTML = test;
}
</script>
當我以正確的值啟動其他函式 getLibelle 時,它??作業得很好。但是當我在 Javascript 的 HMTL 頁面中啟動 rechercheLibelle 時,我的測驗變數結果的值“未定義”。
任何人都可以幫助我。我認為問題出在“google.script.run.getLibelle(codeArticle)”上,但我不知道如何將結果從服務器端翻譯到我的小部件的 html 頁面。感謝您提前提供幫助
uj5u.com熱心網友回復:
在您的腳本中,如何進行以下修改?
從:
var test = google.script.run.getLibelle(codeArticle);
console.log(test);
document.getElementById("libelle").innerHTML = test;
至:
google.script.run.withSuccessHandler(test => {
console.log(test);
document.getElementById("libelle").innerHTML = test;
}).getLibelle(codeArticle);
- 當
getLibelleat Google Apps Script 的腳本完成后,可以通過withSuccessHandlerat Javascript 檢索回傳的值。
筆記:
當我看到您的 Google Apps 腳本時,
getLibelle也許可以對其進行修改以降低流程成本。那么,如何使用 TextFinder 進行以下修改呢?function getLibelle(codeArticle) { const classeur = SpreadsheetApp.getActiveSpreadsheet(); const feuille = classeur.getSheetByName("BASE ARTICLE"); const lastRow = feuille.getLastRow(); const tDonnees = feuille.getRange("B2:B" lastRow).createTextFinder(codeArticle).findNext(); return tDonnees ? tDonnees.offset(0, 1).getValue() : "Value was not found."; }
參考:
- withSuccessHandler(函式)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/494446.html
標籤:谷歌应用脚本
