我在小部件中作業,用戶可以在特定行中添加資料。在模態對話框中,他可以鍵入我要添加資料的行并選擇要添加的資料。資料通過宏鏈接到其他資料,我也想添加這個值。
這是我的服務器端的腳本:
function include(filename){
return HtmlService.createHtmlOutputFromFile(filename).getContent();
}
function widget() {
const classeur = SpreadsheetApp.getActiveSpreadsheet();
const feuille = classeur.getActiveSheet();
const ui = SpreadsheetApp.getUi();
var widget;
widget = HtmlService.createTemplateFromFile("widget.html").evaluate();
ui.showModalDialog(widget, "Add new Row");
widget.setWidth(600);
widget.setHeight(600);
}
function getData(){
const classeur = SpreadsheetApp.getActiveSpreadsheet();
const feuille = classeur.getSheetByName("BDD");
var services = feuille.getRange("A2:A").getValues().filter(d =>d[0] !== "");
return services.map(d => "<option>" d[0] "</option>").join("")
}
function ajoutLigne(row,data) {
const classeur = SpreadsheetApp.getActiveSpreadsheet();
const feuille = classeur.getActiveSheet();
index = feuille.getActiveRange().getRow();
feuille.insertRowBefore(row);
feuille.getRange("A" row).setValue(data);
feuille.getRange("B" row).setValue("=RECHERCHEV(A" row ";BDD!A:B;2;FAUX)");
}
這是我的小部件的 HTML 頁面:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<?!= include('JavaScript'); ?>
</head>
<body>
<p>Row : <input type="text" id="row"></p>
<br>
<p><i>Select data :</i>
<select id="data" name="data" class="form-control" required>
<option disabled selected>Choose ...</option>
<?!=getData()?>
</select>
</p>
<input type="button" class="button" value="SUBMIT" onclick="addRow();">
<input type="button" class="button" value="CLOSE" onclick="google.script.host.close();">
</body>
</html>
這是我的 JavaScript 頁面:
<script>
function addRow(){
var row = document.getElementById("row").value;
var data = document.getElementById("data").value;
google.script.run.ajoutLigne(row,data);
}
</script>
當我啟動我的小部件并匯總資料時,它會在我的作業表選項卡中正確報告。但是宏會產生錯誤:
公式決議錯誤
我不明白為什么。語法與上一行相同。如果我修改宏 2 次(第一次更改一件事,第二次撰寫初始宏),它的作業....
如果有人知道這個問題的答案,我將不勝感激。感謝您提前提供幫助(這是我的作業表的鏈接)。
uj5u.com熱心網友回復:
當我看到您的問題時,使用以下腳本輸入公式。
feuille.getRange("B" row).setValue("=RECHERCHEV(A" row ";BDD!A:B;2;FAUX)");
但是,當我看到您的示例電子表格中包含您的腳本時,公式是使用以下腳本放置的。
feuille.getRange("B" row).setValue("=VLOOKUP(A" row ";BDD!A:B;2;FAUX)");
而且,根據您的示例電子表格和您的評論,在當前階段,我認為您可能會嘗試使用VLOOKUP.
如果我的理解是正確的,那么下面的修改呢?
從:
feuille.getRange("B" row).setValue("=VLOOKUP(A" row ";BDD!A:B;2;FAUX)");
至:
feuille.getRange("B" row).setFormula("=VLOOKUP(A" row ";BDD!A:B;2;FALSE)");
參考:
- setFormula(公式)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/493924.html
