如果该行的第一个单元格不为空,则需要将边界设置为该行的范围。
我有此代码:
function onEdit() {
var ss = SpreadsheetApp.getActiveSpreadsheet ();
var sheetmon = ss.getSheetByName('Monitor');
var rows = sheetmon.getRange('G59:P90');
var numRows = rows.getNumRows();
var values = rows.getValues();
var testvalues = sheetmon.getRange('G59:G90').getValues();
rows.setBorder(false, false, false, false, false, false, "red", SpreadsheetApp.BorderStyle.SOLID_MEDIUM);
for (var i = 0; i <= numRows - 1; i++) {
var n = i + 1;
if (testvalues[i] > 0) {
sheetmon.getRange('a' + n + ':g' + n).setBorder(true, true, true, true, true, true, "red", SpreadsheetApp.BorderStyle.SOLID_MEDIUM);
}
}
}
但是它仅适用于G59:G90范围的第一行
我哪里错了?
答案 0 :(得分:1)
testvalues是一个二维数组。所以
if (testvalues[i] > 0) {
sheetmon.getRange('a' + n + ':g' + n).setBorder(true, true, true, true, true, true, "red", SpreadsheetApp.BorderStyle.SOLID_MEDIUM);
}
应该是这样的:
if (testvalues[i][0] > 0) {
sheetmon.getRange('a' + n + ':g' + n).setBorder(true, true, true, true, true, true, "red", SpreadsheetApp.BorderStyle.SOLID_MEDIUM);
}
答案 1 :(得分:0)
如果要在循环中要评估的同一行中设置边框,则必须将n
的值更改为始终比i
大59。
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetmon = ss.getSheetByName('Monitor');
var rows = sheetmon.getRange('G59:P90');
var numRows = rows.getNumRows();
var values = rows.getValues();
var testvalues = sheetmon.getRange('G59:G90').getValues();
rows.setBorder(false, false, false, false, false, false, "red", SpreadsheetApp.BorderStyle.SOLID_MEDIUM);
for (var i = 0; i <= numRows - 1; i++) {
var n = i + 59;
Logger.log(testvalues[i] > 0);
if (testvalues[i] > 0) {
Logger.log(testvalues[i]);
sheetmon.getRange('A' + n + ':G' + n).setBorder(true, true, true, true, true, true, "red", SpreadsheetApp.BorderStyle.SOLID_MEDIUM);
}
}