gpt4 book ai didi

google-apps-script - 如何使用 javascript 选择谷歌电子表格中的所有复选框?

转载 作者:行者123 更新时间:2023-12-02 02:14:03 26 4
gpt4 key购买 nike

描述很简单:我有三个复选框,第三个复选框在选中时必须选中所有其他复选框(一旦取消选中,也必须取消选中它们)。所有这些都必须在网格中,我不能使用 html 或除 Google Apps 脚本之外的任何其他语言。

这对您来说可能是一项简单的任务,但我在使用 JavaScript 和英语方面遇到了很多困难。无论如何,这是代码:

function checkboxes() {
var range = SpreadsheetApp.getActiveSpreadsheet();
var sheet = range.getSheetId();
var myapp = UiApp.createApplication().setTitle('Title').setWidth(1000).setHeight(100);
var mygrid = myapp.createGrid(3, 3).setCellPadding(5).setCellSpacing(5);

//One
mygrid.setWidget(0, 0, myapp.createLabel('One').setId('One'));
mygrid.setWidget(0, 1, myapp.createCheckBox().setName('One'));

//Two
mygrid.setWidget(1, 0, myapp.createLabel('Two').setId('Two'));
mygrid.setWidget(1, 1, myapp.createCheckBox().setName('Two'));

var handler1 = myapp.createClientHandler().forTargets(myapp.getElementById('One')).setValue(true).forTargets(myapp.getElementById('Two')).setValue(true);

//Last
mygrid.setWidget(2, 0, myapp.createLabel('Last').setId('Last'));
mygrid.setWidget(2, 1, myapp.createCheckBox().setName('Last').OnClickHandler(handler1));
//...
}

最佳答案

上次我尝试无法将 ClientHandlers 验证与复选框一起使用。因此,您必须坚持使用速度较慢的服务器处理程序,因此您可能需要添加一点无限进度 gif,以便用户知道正在执行某些操作。

这是我使用的解决方案的示例:

function mygui() {
var imgUrl = 'https://f0839004-a-62cb3a1a-s-sites.googlegroups.com/site/hgabreu/files/ajax-loader.gif';
//I may remove this image from this url at any time. Host yours in a place you control

var app = UiApp.createApplication().setTitle('CheckAll example');
var panel = app.createVerticalPanel();

var boxes = ['Example 1', 'Test', 'Last check'];
var groupName = 'myCheckBoxes';

var groupAll = groupName+','+boxes.length;
var image = app.createImage(imgUrl).setId(groupName+',img').setVisible(false);
var checkAll = app.createCheckBox("Check All").setId(groupAll).setName(groupAll).addValueChangeHandler(
app.createServerHandler('checkAll_').addCallbackElement(panel)).addValueChangeHandler(
app.createClientHandler().forEventSource().setVisible(false).forTargets(image).setVisible(true));

panel.add(checkAll).add(image);
for( var i in boxes )
panel.add(app.createCheckBox(boxes[i]).setId(groupName+','+i));

SpreadsheetApp.getActive().show(app.add(panel));
}

function checkAll_(e) {
var app = UiApp.getActiveApplication();
var p = e.parameter; //just shortening
var checkState = p[p.source] == 'true';
var parts = p.source.split(',');
var groupName = parts[0];
var size = +parts[1];
for( var i = 0; i < size; ++i )
app.getElementById(groupName+','+i).setValue(checkState);
app.getElementById(groupName+',img').setVisible(false);
app.getElementById(p.source).setVisible(true);
return app;
}

关于google-apps-script - 如何使用 javascript 选择谷歌电子表格中的所有复选框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11466249/

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