目的
这是一份清单。 人们在单元格中键入“x”。如果x是单元格中的唯一内容,则应更改为✓
脚本
function onEdit(e) {
var r = e.range;
if (r.getValue() === 'x' || r.getValue() === 'X') {
r.setValue('✓');
r.setHorizontalAlignment('center');
}
}
问题
慢慢行动。
但是当快速输入时(即:键入'x',使用箭头键移动到另一个单元格,键入'x',移动,[快速重复多次]),一些单元格会更改,但有些单元格保持为x。
修改 我现在有一个工作(但不优雅)的解决方案。我还是想知道是否有更优雅的解决方案。
// Checks 300 rows and 11 columns, starting from E10 (row 10, col 5)
// if the value is 'x' or 'X', it changes it to a '✓'
function onEdit(e) {
var sheet = SpreadsheetApp.getActiveSheet();
// getRange(row, column, numRows, numColumns)
var values = sheet.getRange(10, 5, 300, 11).getValues();
for (var i=0; i<values.length; i++) {
for (var j=0; j<values[i].length; j++) {
if ( values[i][j] === 'x' || values[i][j] === 'X') {
var cell = sheet.getRange( 10 + i, 5 + j );
cell.setValue('✓');
cell.setHorizontalAlignment('center');
}
}
}
}
每次onEdit触发时,都会检查表中的每个单元格(其中3300个)。由于onEdit似乎总是捕获最后一次编辑(但不是中间的编辑),这会将每个x更改为✓。
背景
在工作中,我被要求将核对表转换为Google Doc。各种表格中有数百个复选框。
我被要求让盒子有支票,✓,因为我们打印并向客户展示这份清单。
我的很多同事都不懂计算机,所以输入法必须非常简单。
问题
有没有办法修复原始脚本,还是有另一种更好的方法来执行此操作?
答案 0 :(得分:0)
我不知道是否可以选择数据验证?否则你可以这样做;
除此之外,您可以使用平方根符号,在我的Mac上可以使用选项-shift-V轻松输入,看起来像√(您必须为您的操作系统查找该组合)。