我想创建一个函数,当相应的单元格从“是”变为“否”时,该函数会自动清除一系列单元格。
我想触发此功能的范围是...... i5:i9,i13:i14,i18
如果此单元格包含'no',我希望清除的范围是n5:n9,n13:n14,n18
这两个单元都位于名为'Wax'的同一张纸上。
我编写了以下脚本并将其分配给工作表上的按钮,但是当我按下它时脚本运行并且单元格不会删除。
function clearautocraFields(e) {
var triggerCell = SpreadsheetApp.getActive().getSheetByName('Wax').getSheetValues(9,5,13,1);
if (triggerCell == 'No'){
var dataSheet = SpreadsheetApp.getActive().getSheetByName('Wax');
sheet.getRange('n5:n9').clearcontent();
sheet.getRange('n13:n14').clearcontent();
sheet.getRange('n18').clearcontent();
}
}
请帮忙。
谢谢,
添
答案 0 :(得分:0)
这些修改怎么样?
getSheetValues(9,5,13,1)
的范围是“e9:e21”。
getSheetValues(9,5,13,1)
检索的数据是二维数组。
getValues()
检索的数据也是二维数组。toString()
将二维数组转换为字符串,并按indexOf()
clearcontent()
修改为clearContent()
。var sheet = SpreadsheetApp.getActive().getSheetByName('Wax')
。function clearautocraFields() {
var sheet = SpreadsheetApp.getActive().getSheetByName('Wax');
var triggerCell = sheet.getRange('i5:i18').getValues();
triggerCell.splice(5, 3);
triggerCell.splice(7, 3);
if (triggerCell.toString().indexOf('No') != -1) {
sheet.getRange('n5:n9').clearContent();
sheet.getRange('n13:n14').clearContent();
sheet.getRange('n18').clearContent();
}
}
如果我误解了你的问题,请告诉我。我想修改。
在此示例脚本中,当在“i5:i9,i13:i14,i18”范围内找到No
时,将清除具有相同行的列“n”的值。
function clearautocraFields() {
var sheet = SpreadsheetApp.getActive().getSheetByName('sheet1');
var triggerCell = sheet.getRange('i5:i18').getValues();
for (var i=0; i<triggerCell.length; i++) {
var index = i + 5;
triggerCell[i][1] = "n" + index;
}
triggerCell.splice(5, 3);
triggerCell.splice(7, 3);
for (var i in triggerCell) {
if (triggerCell[i][0] == 'No') {
sheet.getRange(triggerCell[i][1]).clearContent();
}
}
}