gpt4 book ai didi

google-apps-script - 谷歌应用程序脚本 TextBox 值未传递给 e.parameter.TextBoxName

转载 作者:行者123 更新时间:2023-12-02 07:05:24 27 4
gpt4 key购买 nike

在下面的代码中,我定义了一个带有名称和 ID 的文本框。按钮处理程序工作正常,但我无法获取在 TextBox 上输入的值。 msgBox 出现,但 e.parameter.matchValue 显示为 undefined

在应用程序的其他部分,我有相同的逻辑,但使用 ListBox 并且工作正常。

我做错了什么?

function chooseColumnValueToMatch() {
var app = UiApp.createApplication().setHeight(150).setWidth(250);
var ss = SpreadsheetApp.getActiveSpreadsheet();

var columnName = ScriptProperties.getProperty("columnNameToMatch");

var h1Line = app.createHTML("<h2>Value to match "+columnName+":</h2>");
var textPara = app.createHTML("<p>Type the VALUE that the <b>"+columnName+"</b> column must match EXACTLY to send the message.</p>");
var selectionHandler = app.createServerHandler('chooseColumnValueToMatchSelectionHandler');
var valueInputBox = app.createTextBox()
.setTitle("Match value for "+columnName)
.setName("matchValue")
.setId("matchValue");
var submitBtn = app.createButton("Submit", selectionHandler);

app.add(h1Line)
.add(textPara)
.add(valueInputBox)
.add(submitBtn);
ss.show(app);
}
function chooseColumnValueToMatchSelectionHandler(e){
var app = UiApp.getActiveApplication();
var columnName = ScriptProperties.getProperty("columnNameToMatch");

var ss = SpreadsheetApp.getActiveSpreadsheet();
var msg = e.parameter.matchValue;

Browser.msgBox("Value to match "+columnName+" column is:", msg, Browser.Buttons.OK);

return app;
}

最佳答案

您必须使用 ServerHandler.addCallbackElement方法。下面的代码演示了它。方法调用“告诉”GAS 内部,作为参数指向的小部件的值应该传递给处理程序。

如果您有多个应该由处理程序处理的小部件,则可以将所有控件放置到一个面板并仅将面板作为addCallbackElement 方法参数。 the point 4.4 of this tutorial中的代码以这种方式显示。

function doGet(e) {
var app = UiApp.createApplication();
var valueInputBox = app.createTextBox()
.setTitle("Match value for XXX")
.setName("matchValue")
.setId("matchValue");
var selectionHandler = app.createServerHandler('chooseColumnValueToMatchSelectionHandler');
selectionHandler.addCallbackElement(valueInputBox);
var submitBtn = app.createButton("Submit", selectionHandler);
var output = app.createLabel().setId("output");
app.add(valueInputBox).add(submitBtn).add(output);
return app;
}

function chooseColumnValueToMatchSelectionHandler(e){
var app = UiApp.getActiveApplication();
var output = app.getElementById("output");

var msg = e.parameter.matchValue;

output.setText("Value to match XXXX column is: " + msg);

return app;
}

关于google-apps-script - 谷歌应用程序脚本 TextBox 值未传递给 e.parameter.TextBoxName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12831385/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com