gpt4 book ai didi

javascript - 复选框 - 个别拒绝测试框(英语、数学、科学)和 "Entire Exam"复选框,选中和未选中

转载 作者:行者123 更新时间:2023-11-30 19:40:02 26 4
gpt4 key购买 nike

对于 Google 表格,我需要在一行中有 4 个复选框。他们代表(3)学校考试被拒。最后一个框是当所有这些都被拒绝时。

2 个月前,我对 VBA 一无所知,从那时起我就用 6 岁的代码制作了一系列宏。他们不漂亮,但他们工作。现在我开始使用 Apps Script 或您建议/推荐我使用的任何编码。我确定两者(VBA 和 Apps 脚本)之间的编码与您相似,但对我来说却完全不同。

我对此没有任何代码或经验。我四处搜索并找到了(在这个网站上)与我正在寻找的东西非常接近的东西。

这是我找到的例子:

all checkboxes need to be checked and unchecked with the main checkbox

这是针对 Google 表格的。我的学生必须参加 3 门考试——英语、数学和科学,但他们有拒绝参加的倾向。他们可能会拒绝全部,部分或全部拒绝。我需要 4 个复选框 - 一个用于他们拒绝的每项考试,一个用于他们拒绝所有考试。如果您选中所有单个框(在一段时间内完成),“整个考试”框将被选中,单个框将变为未选中状态。如果您先直接勾选“整个考试”框,则可能在各个框上的任何勾选都将取消勾选。

复选框将位于同一行但单独的单元格中。英语为 F2,数学为 G2,科学为 H2,整个考试为 I2。

我无法同时选中所有个别考试框和整个考试框的原因是我需要区分部分考试和未参加的全部考试。我需要计算被拒绝为“部分考试”以及整个考试的个别考试的数量。

我想做的另一件事是减少点击次数,因此建议可能只为单个考试设置 3 个框,如果它们都被选中,则意味着整个考试已被拒绝,即 2额外的鼠标点击。这张表很可能会在考试开始前一个小时突然大量拒绝时使用,因此如果可能的话,只需选中“整个考试”框,会比选中所有 3 个单独的框更简单/更快。

这是如何运作的?您是否将代码分配给复选框本身?

我将不胜感激任何反馈和帮助。如果你有任何网站可以推荐我开始我的学习,请分享。谢谢。吉姆

最佳答案

确保您的 Eng、Math、Sci 和整个栏目; F、G、H、I分别;设置为实际的表格复选框(选择 F2:I,菜单→插入→复选框)。
Simple screenshot showing what the above might look like in Sheets.

如果您从未在电子表格上运行过 Google Apps 脚本,也许可以逐步阅读一个不错的教程,例如this Ben Collins guide的前几节.

代码运行后,尝试一个脚本来监视对表格文件的编辑并响应您所需的检查和更改。

function onEdit(e) {
// these four 'settings' give the script the checkbox range. UPDATE IF RESTRUCTURING!
var checkboxRange = {
left : 6,
right : 9,
top : 2,
bottom : 1000
};

// where was the edit performed?
var editSheet = e.range.getSheet();
var editRow = e.range.getRow();
var editCol = e.range.getColumn();

if(editRow < checkboxRange.top || editRow > checkboxRange.bottom) {return};
if(editCol < checkboxRange.left || editCol > checkboxRange.right ) {return};
Logger.log("User edit was in the checkbox area.");

if(editCol == checkboxRange.right) {
Logger.log("User changed an 'Entire Exam' checkbox; seeing if now checked.");
if(editSheet.getRange(editRow,checkboxRange.right).getValue()) {
Logger.log("Yes, user checked that 'Entire Exam' checkbox. Clearing Partials.");
editSheet.getRange(editRow,checkboxRange.left,1,3).uncheck();
}
}
else {
Logger.log("User changed a 'Partial' checkbox; seeing what's there now:");
var partials = editSheet.getRange(editRow, checkboxRange.left, 1, 3).getValues();
Logger.log(partials);
if(partials[0][0] && partials[0][1] && partials[0][2]) {
Logger.log("All Partials are checked; clearing Partials and checking Entire.");
editSheet.getRange(editRow,checkboxRange.right).check();
editSheet.getRange(editRow,checkboxRange.left,1,3).uncheck();
}
else {
Logger.log("User changed a Partial, but not all true; paranoid unchecking Entire.");
editSheet.getRange(editRow,checkboxRange.right).uncheck();
}
}

}

我相信它符合您描述的期望行为。在英语中,它:

  • 测试并忽略 F2:I1000 范围之外的编辑。
  • 否则,测试更改是否为:“选中整个考试框”;如果是,清除英语、数学、科学。
  • 否则,查看主题复选框是什么,以及
    • 如果现在全部选中,请取消选中它们并选中 Entire
    • 否则,他们更改了部分内容,但并非全部正确,因此为了清洁起见,请取消选中整个考试。

我在其中放置了一些 Logger.log() 消息而不是注释。在工作表中进行编辑后,您可以通过返回脚本编辑器并从菜单中选择查看 → 日志来查看记录器根据您的编辑生成的内容。一旦您对工作表和脚本的工作方式感到满意,就可以删除记录器调用。

最后,一个警告;一旦你自己让它工作,让其他将使用表格文件的人进行一些测试编辑以查看它的工作并确认你的脚本在重要的一天之前运行 - 没有令人讨厌的惊喜!

关于javascript - 复选框 - 个别拒绝测试框(英语、数学、科学)和 "Entire Exam"复选框,选中和未选中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55498438/

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