我还没有找到任何用于检查复选框是否设置为真或假的内置函数,isChecked() 不可用是应用程序脚本(如果我是对的)。关于如何找到它的任何想法,或者我们将有一个值更改处理程序来计算值更改的次数并查找它是否被检查?
4 回答
我可能是错的,但是我相信复选框状态存在问题,即使它的状态看起来像布尔值,它的行为不像布尔值而是像字符串
如果您在电子表格 e.parameter.myCheckBox 中打印,您将得到 TRUE 或 FALSE
如果您在电子表格中打印 e.parameter 您将获得整个对象并看到 myCheckBox=true 或 myCheckBox=false
但是, if (e.parameter.myCheckBox) 将始终返回 True
我正在使用的解决方法是: if (e.parameter.myCheckBox == "true") 将返回实际的 myCheckBox 状态
以防万一,我正在问题跟踪器中打开一张新票,希望这会对您有所帮助
附言。经谷歌确认,e.parameter.myCheckBox 是一个字符串,而不是布尔值
如果你想将它用作布尔值,它就像 (e.parameter.myCheckBox == "true")
您应该为您的复选框指定一个名称,以便您可以使用 e.parameter.checkboxname 在处理程序函数中检索其值:该值是布尔值。
var chkmode = app.createCheckBox("description").setName("chk1").setId("chk1")
如果需要,您可以使用 ID 从处理函数(或任何其他函数)修改其状态(getElementbyId())
请注意,根据您的需要,处理程序可以位于复选框本身(更改处理程序)或 UI 中的任何其他元素上。
var handler = app.createServerClickHandler('tellStatus');
然后(例如在标签中显示它)
function tellStatus(e){
var app = UiApp.getActiveApplication();
app.getElementById('yourStatusLabel').setText('Checkbox checked: ' + e.parameter.yourCheckbox)
return app;
}
您应该使用如下所示的处理程序函数。
if(e.parameter['checkbox_isChecked_'] == 'true'){
itemsSelected+= e.parameter['checkbox_value_']+',';
}