我正在做一个项目,在这个项目中,当选中一行的复选框时,我尝试在特定行上有值,以便自动输入到不同的单元格中。
我尝试了很多不同的方法,在网上问了很多问题,但仍然无法达到我的目标。
请看下面的图片。
这样做可以做到以下几点:
当在单元格C7中键入名称时,该特定名称下的所有信息都将出现在B20:F中。当信息被过滤时,复选框将出现在A20:A中,仅显示在B20:F中存在数据的行中。
出现复选框的代码是由在堆栈溢出中很棒的人给出的,如下所示:(谢谢!)
function onEdit(e) {
const sheet = SpreadsheetApp.getActiveSheet();
const sName = sheet.getName();
if (sName === "sheet1") {
const len = sheet.getRange('B20:B').getValues().filter(row => row[0] != '').length;
// Condition-2: edit range === C7;
if (e.range.getColumn() === 3 && e.range.getRow() === 7) {
const range = sheet.getRange(20,1,len,1);
sheet.getRange('A20:A').removeCheckboxes();
range.insertCheckboxes().uncheck();
}
// Condition-3: column of edit range === A, row of edit range > 19, value === true;
if (e.range.getRow() > 19 && e.range.getColumn() === 1 && e.range.getValues()[0][0] === true) {
sheet.getRange('A20:A').uncheck();
e.range.check();
}
}
}因此,这样做了,我现在正试图实现两件事。
编号1:删除A20中的复选框:a当C7中键入的名称被删除时。
2:当选中A20:A中的复选框时,将该行中的数据自动输入到C9、C11和C13
我只熟悉python,它看起来就像是绑定到代码,这种语言就像python一样,每次都给我不成功的结果。有人愿意帮我吗?
如果试试看电子表格确实有帮助,请尝试访问https://docs.google.com/spreadsheets/d/14ZzzPUc4TRNVFB0fjfPfIJWWwvLGIuagT2u8Gwjmt9E/edit#gid=0
我迫切需要一个代码大师的帮助。
发布于 2022-11-30 12:42:44
您的onEdit函数有点混乱。您不能同时在一个函数中执行和定义多个函数。在您的示例中,您可以直接定义onEdit函数中的步骤(就像我所做的那样),或者将这两个函数移到外部,定义它们并在onEdit中触发它们。总之,我认为这应该能解决你的问题:
function onEdit(e) {
const sheet = e.range.getSheet();
const sName = sheet.getName();
if (sName === "Teacher's Input Form") {
const len = sheet.getRange('B20:B').getValues().filter(row => row[0] != '').length;
if (e.value != null && e.range.getColumn() === 3 && e.range.getRow() === 7) {
const range = sheet.getRange(20, 1, len, 1);
range.insertCheckboxes().uncheck();
}
if (e.value == null && e.range.getColumn() === 3 && e.range.getRow() === 7) {
sheet.getRange('A20:A').removeCheckboxes();
}
if (e.range.columnStart == 1 && e.range.rowStart > 19 && e.value == "TRUE") {
sheet.getRange('A20:A').uncheck();
e.range.check();
const dataRow = e.range.rowStart;
const rowData = sheet.getRange(dataRow, 1, 1, 6).getValues();
const mappedData = [[rowData[0][2]],[''],[rowData[0][3]],[''],[rowData[0][4]]];
sheet.getRange("C9:C13").setValues(mappedData);
}
}
}https://stackoverflow.com/questions/74623057
复制相似问题