如何解决Google脚本-正确删除Else语句,以便跳过/忽略
我有一个检查表,C列指示通过单元格中写入的“启用”或“禁用”自动进行的测试。
每行的下一行是每个测试的“通过/空”列。
我有代码查找是否在C列,该行X列中的Enabled(已启用)(自动标记为“通过”)。
问题:如果C列包含“ Disabled”但还包含一个Pass,则在运行脚本时它将用一个空单元格替换该Pass。我该如何更改else语句以仅忽略该单元格并保留其中的任何内容,但不满足启用条件
function autoPassPC() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Aug 2020');
// What to put in the test result
var values1 = "P";
// Where to look for Auto:
var values2 = sheet.getRange("C10:C15" + sheet.getLastRow()).getValues();
// Keyword to look for in Auto: column
var putValues = [];
for (var i = 0; i < values2.length; i++) {
if (values2[i][0] === "Enabled") {
putValues.push([values1]);
} else {
putValues.push([""]);
}
}
// Put value1 inside row,column# for test result
sheet.getRange(10,25,putValues.length,1).setValues(putValues);
}
基本上我该如何摆脱
} else {
putValues.push([""]);
}
正确吗?只是删除它会导致脚本在每一行上都放置“ P”。只是希望它忽略单元格。
谢谢!
解决方法
删除else
语句实际上将跳过该行,但是一旦您跳过一行,putValues
中的所有后续值将位于错误的行上。代替“跳过”,尝试将现有值推入putValues
。
function autoPassPC() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Aug 2020');
// What to put in the test result
var values1 = "P";
// Where to look for Auto:
var enabledDisabled = sheet.getRange("C10:C15" + sheet.getLastRow()).getValues();
var testResultsRange = sheet.getRange("X10:X15" + sheet.getLastRow());
var testResults = testResultsRange.getValues();
// Keyword to look for in Auto: column
var putValues = [];
for (var i = 0; i < enabledDisabled.length; i++) {
if (enabledDisabled[i][0] === "Enabled") {
putValues.push([values1]);
} else {
putValues.push([testResults[i][0]]); // Push the existing cell value
}
}
// Put value1 inside row,column# for test result
testResultsRange.setValues(putValues);
}
您还可以尝试一次获取整个表,从而只进行一次getValues()
调用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。