我是Google应用程序脚本的新手。这是我的sample spreadsheet.,我正在尝试编写一个脚本,其中一个复选框可切换列的格式(公制/英制)。它仅适用于第一种情况,不适用于第二种情况。我不确定为什么(e.value == true / false)似乎不起作用。
function onEdit (e) {
var Name = SpreadsheetApp.getActiveSheet().getName();
Logger.log(Name)
if (e.range.getA1Notation() === 'C19' && e.value == 'TRUE') {
SpreadsheetApp.getActiveSheet().getRange("K2:K89").setNumberFormat("0.00oz")
}
else if (e.range.getA1Notation() === 'C19' && e.value == 'FALSE'){
SpreadsheetApp.getActiveSheet().getRange("K2:K89").setNumberFormat("0.00g")
}}
答案 0 :(得分:1)
这是一个代码片段,可用于根据复选框输入更改列的格式:
if (e.range.getA1Notation() == 'C19')
{
if (e.value == 'TRUE') {
SpreadsheetApp.getActiveSheet().getRange("K2:K59").setNumberFormat("000.00lb");
}
else
{
SpreadsheetApp.getActiveSheet().getRange("K2:K59").setNumberFormat("000.00oz");
}
}
if (e.range.getA1Notation() == 'C18'){
if (e.value == 'TRUE') {
SpreadsheetApp.getActiveSheet().getRange("L2:L59").setNumberFormat("##0.00gr");
}
else
{
SpreadsheetApp.getActiveSheet().getRange("L2:L59").setNumberFormat('##0.00"%"');
}
}
这允许更改列K
和L
的格式。这仅出于说明目的,您还需要重新计算公制/英制重量等。
我猜想的主要问题是(e.value == true)
应该是(e.value == 'TRUE')
。
另外,您可能需要使用SpreadsheetApp.getActiveSheet()
而不是SpreadsheetApp.getActiveSpreadSheet()
。
注意:通过实验,我发现复选框返回的值似乎是字符串'TRUE'
和'FALSE'
,而不是布尔值。因此,if(e.value)
无法像您期望的那样测试布尔值true
等。我愿意接受上级对此的更正,但是(e.value == 'TRUE')
表格是我唯一可以做的表格。