如何在Google工作表中自动创建复选框?



我有一个链接到Google Form的Google Sheet文件,我用它来记录不同老师的课程注册。在它的内部,我创建了额外的列,标记为&;x &;在一行中,当有人注册特定的类时,使用=IF函数。我希望那些"x"是复选框,这样我就可以在与会者到达时检查工作表本身,但是没有方法我可以找到一个函数来输出一个复选框到单元格,我几乎没有JavaScript的知识。

示例表:https://docs.google.com/spreadsheets/d/19BUkEfo8dWcAfPDhmhBTuhC1-V-QROlfF0pWH75c9VA/edit?usp=sharing

理想情况下,我会有一个自定义函数,基本上与my =IF相同,但插入一个复选框,而不是写"X"(即。如果单元格A包含单元格B的文本,则插入复选框,否则留空)。

另外,我也找到了一个类似问题的解决方案,我认为它会起作用,但我不知道如何根据我的需要进行调整。这样我就可以保持我的工作表原样,脚本就可以用复选框替换X ?

这可能不是很有效,但它是有效的:

// function creates menu 'SCRIPTS'
function onOpen() {
SpreadsheetApp.getUi().createMenu('SCRIPTS')
.addItem('Insert checkboxes', 'replace_x_to_checkboxes')
.addToUi();
}
// function replaces all 'X' on the sheet with checkboxes
function replace_x_to_checkboxes() {
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getDataRange();
var data = range.getValues();
for (var row in data) 
for (var col in data[row]) {
if (data[row][col] == 'X') sheet.getRange(+row+1,+col+1).insertCheckboxes()
}
}

要插入复选框而不使用公式和'X',可以运行这个函数:

function insert_checkboxes() {
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
var b1 = data[0][1]; // name from cell 'B1'
var c1 = data[0][2]; // name from cell 'C1'
for (var row=1; row<data.length; row++) {
if (data[row][3].indexOf(b1) > -1) sheet.getRange(row+1,2).insertCheckboxes();
if (data[row][3].indexOf(c1) > -1) sheet.getRange(row+1,3).insertCheckboxes();
}
}

以防万一。你可以使用相同条件的现代变体data[row][3].includes(b1))来代替data[row][3].indexOf(b1) > -1

最新更新