我正在使用 Google Workspace 插件为 Gmail 创建一个 CRM 助手。除了 SMS 提供程序之外,我几乎已经构建了所有功能。现在,我有一个带有表单输入和按钮的表单部分,如下所示。
function createSendSMSSection(phone, client) {
let section = CardService.newCardSection();
let input = CardService.newTextInput()
.setFieldName("sms_input")
.setTitle("Type in a SMS message here!")
.setMultiline(true);
input.setOnChangeAction(CardService.newAction().setFunctionName("handleInputChange"));
let button = CardService.newTextButton()
.setText("SEND")
.setTextButtonStyle(CardService.TextButtonStyle.FILLED)
.setDisabled(true);
let action = CardService.newAction()
.setMethodName("sendSMS")
.setParameters({ "phone": phone, "clientjson": JSON.stringify(client) });
button.setOnClickAction(action);
let kv = CardService.newKeyValue()
.setContent(' ')
.setButton(button);
section.addWidget(input);
section.addWidget(kv);
return section;
}
默认情况下,发送按钮处于禁用状态。我对本节的意图是用户将文本输入到 中input
,这将调用handleInputChange()
. 此函数将检查表单输入是否有任何内容,如果有,则启用发送按钮。但是,当我尝试这样做时:
function handleInputChange(event) {
const inputarr = event.formInputs["sms_input"];
let input = ''
if (inputarr)
{
for (inputrow of inputarr) {
input = " " + inputrow;
}
}
input = input.trim();
if (input && input != '') {
State.SENDDISABLED = false;
State.SMS_Body = input;
}
else {
State.SENDDISABLED = true;
State.SMS_Body = null;
}
}
按钮的状态根本没有改变!我知道我可以使用启用按钮创建一张新卡,然后调用updateCard()
用新卡替换旧卡。但是,这会产生非常滞后的体验,因为必须在第一次击键时创建一张新卡。有什么方法可以在不渲染新卡的情况下更新此按钮的状态?