复选框/取消复选框 Google Appscript Google 表格
Check Boxes/ Uncheck Boxes Google Appscript Google Sheets
我刚刚在 Google Appsheet 中学习脚本,并复制了其他脚本,试图调整它们以切换我的复选框,但无法使其正常工作。有人可以帮我编写脚本吗?
从第 5 行开始的整个 J、L、N、P 列一次只需要每行选中一个复选框“True”。 J、L、N、P 列第 4 行需要一个主复选框,用于选中或取消选中整列。
我从 Ben 开始,但无法对其进行编辑。
https://www.benlcollins.com/apps-script/radio-buttons-in-google-sheets/?unapproved=191483&moderation-hash=afecc2580f0b56c2ec9e26cdef4d1a99#comment-191483
这是我目前所做的,但它并没有包含整个列或所有主复选框。
function onEdit(e) {
const as = e.source.getActiveSheet();
const cell = e.range.getA1Notation();
const cell_checks = ['J4','L4','N4','P4'];
if(as.getName() == "MATERIAL LIST" && cell_checks.includes(cell) &&
e.range.isChecked())
{cell_checks.filter(val=>val!=cell).forEach(c=>as.getRange(c).uncheck())}
var spreadsheet = SpreadsheetApp.getActive();
if (e.range.getA1Notation() == "J3") {
spreadsheet.getRange('J4:J291').setValue('True');
}
}
按如下方式修改您的脚本:
function onEdit(e) {
const as = e.source.getActiveSheet();
const lastRow = as.getLastRow();
const cell = e.range;
const col_checks = ['J','L','N','P'];
// master row
if(as.getName() == "MATERIAL LIST" && cell.getRow()==4 && cell.isChecked()){
as.getRange(5,cell.getColumn(),lastRow-4,1).setValue('TRUE')
col_checks.filter(val=>(val+cell.getRow())!=cell.getA1Notation()).forEach(c=>as.getRange(c+cell.getRow()).offset(0,0,lastRow-3).uncheck())
}
// individual row
if(as.getName() == "MATERIAL LIST" && cell.getRow()>4 && cell.isChecked()){
col_checks.filter(val=>(val+cell.getRow())!=cell.getA1Notation()).forEach(c=>as.getRange(c+cell.getRow()).uncheck())
}
}
我刚刚在 Google Appsheet 中学习脚本,并复制了其他脚本,试图调整它们以切换我的复选框,但无法使其正常工作。有人可以帮我编写脚本吗? 从第 5 行开始的整个 J、L、N、P 列一次只需要每行选中一个复选框“True”。 J、L、N、P 列第 4 行需要一个主复选框,用于选中或取消选中整列。
我从 Ben 开始,但无法对其进行编辑。 https://www.benlcollins.com/apps-script/radio-buttons-in-google-sheets/?unapproved=191483&moderation-hash=afecc2580f0b56c2ec9e26cdef4d1a99#comment-191483
这是我目前所做的,但它并没有包含整个列或所有主复选框。
function onEdit(e) {
const as = e.source.getActiveSheet();
const cell = e.range.getA1Notation();
const cell_checks = ['J4','L4','N4','P4'];
if(as.getName() == "MATERIAL LIST" && cell_checks.includes(cell) &&
e.range.isChecked())
{cell_checks.filter(val=>val!=cell).forEach(c=>as.getRange(c).uncheck())}
var spreadsheet = SpreadsheetApp.getActive();
if (e.range.getA1Notation() == "J3") {
spreadsheet.getRange('J4:J291').setValue('True');
}
}
按如下方式修改您的脚本:
function onEdit(e) {
const as = e.source.getActiveSheet();
const lastRow = as.getLastRow();
const cell = e.range;
const col_checks = ['J','L','N','P'];
// master row
if(as.getName() == "MATERIAL LIST" && cell.getRow()==4 && cell.isChecked()){
as.getRange(5,cell.getColumn(),lastRow-4,1).setValue('TRUE')
col_checks.filter(val=>(val+cell.getRow())!=cell.getA1Notation()).forEach(c=>as.getRange(c+cell.getRow()).offset(0,0,lastRow-3).uncheck())
}
// individual row
if(as.getName() == "MATERIAL LIST" && cell.getRow()>4 && cell.isChecked()){
col_checks.filter(val=>(val+cell.getRow())!=cell.getA1Notation()).forEach(c=>as.getRange(c+cell.getRow()).uncheck())
}
}