Google apps script 如何在GoogleApps脚本中只选中一个复选框而不是两个?
因此,我想这样做,如果输入的是TRUE语句,则另一个复选框将为FALSE,反之亦然。官方GAS文档包含许多有用的示例,因此请在遇到问题时参考。下面的例子可能会对您有所帮助。这适用于第1列中两个复选框直接位于彼此下方(第1行和第2行)的场景Google apps script 如何在GoogleApps脚本中只选中一个复选框而不是两个?,google-apps-script,google-sheets,triggers,radio-button,Google Apps Script,Google Sheets,Triggers,Radio Button,因此,我想这样做,如果输入的是TRUE语句,则另一个复选框将为FALSE,反之亦然。官方GAS文档包含许多有用的示例,因此请在遇到问题时参考。下面的例子可能会对您有所帮助。这适用于第1列中两个复选框直接位于彼此下方(第1行和第2行)的场景 function onEdit() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheets()[1]; if (sheet.getActiveCell()
function onEdit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[1];
if (sheet.getActiveCell() = "E11"){
sheet.getRange('E12').activate();
sheet.getCurrentCell().setValue('FALSE');
sheet.getRange('E13').activate();
sheet.getCurrentCell().setValue('FALSE');
sheet.getRange('E14').activate();
sheet.getCurrentCell().setValue('FALSE');
}
if (sheet.getActiveCell() = "E12"){
sheet.getRange('E11').activate();
sheet.getCurrentCell().setValue('FALSE');
sheet.getRange('E13').activate();
sheet.getCurrentCell().setValue('FALSE');
sheet.getRange('E14').activate();
sheet.getCurrentCell().setValue('FALSE');
}
}
这里是的另一个实现,它使用类支持任意定向的分组复选框,前提是它们都位于同一工作表上(范围源必须位于同一工作表上) 参考资料
getValue
&setValue
,加上JavaScript比较。请注意,您只需删除/替换activate()
+CurrentCell()
逻辑即可录制宏,使用更直接的逻辑:获取范围->对范围执行操作
function onEdit(e){
//Checkbox coordinates.
var checkboxColumn = 1;
var checkboxRows = [1, 2];
var sheetName = "YOUR_SHEET_NAME";
//Get the edited cell value
var value = e.value;
//Get the old value
var oldValue = e.oldValue;
var editedRange = e.range;
var editedSheet = editedRange.getSheet();
if (editedSheet.getName() == sheetName && editedRange.getColumn() == checkboxColumn && checkboxRows.indexOf(editedRange.getRow()) != -1) {
//Get the row coordinate of the other checkbox
var checkboxRow = checkboxRows.filter(function(rowNum) { return rowNum != editedRange.getRow();})[0];
//set its value to the old value of the edited checkbox
var range = editedSheet.getRange(checkboxRow, checkboxColumn).setValue(oldValue);
}
}
function onEdit(e) {
const sheetName = 'some sheet name',
rbLocations = [
{r: 1, c: 1}, // A1
{r: 2, c: 4}, // D2
{c: 1, r: 8}, // A8
...
];
if (!e) return; // only run for sheet edits.
const toggle = e.oldValue;
if (toggle === undefined)
return; // require edit to be of a single cell.
const sheet = edited.getSheet();
if (sheet.getName() !== sheetName)
return; // require edit to be of the desired sheet.
const edited = e.range,
eRow = edited.getRow(),
eCol = edited.getColumn(),
otherRBs = rbLocations.filter(
function (loc) {
return loc.r !== eRow || loc.c !== eCol;
}
).map(
function (l) {
// Create an R1C1 notation string.
return "R" + l.r + "C" + l.c;
}
);
// Acquire and use a RangeList to set the same value to all the other checkboxes.
sheet.getRangeList(otherRBs).setValue(toggle);
}