Google 시트 내의 범위에서 여러 기준을 식별하려고합니다. 값을 확인하면 스크립트는 값이있는 열을 나에게 반환하고 열을 삭제하는 함수를 호출해야합니다. 아래에 제가 함께 작성한 코드가 있지만 문제가 있습니다.셀 값을 기준으로 열을 삭제하십시오.
삭제하는 동안 범위 초과 오류가 발생합니다.
//Delete Column
function deleteColumn(col) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var numCol = sheet.getRange("A1:T23").getNumColumns();
var data = sheet.deleteColumn(col);
for (var i = numCol; i >= 0; i--) {
var remove = data;
Logger.log(remove + " was removed");
}
}
//find columns
function findColumn() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var data = sheet.getRange("A1:T23");
var values = data.getValues();
for (var i = 1; i < values.length; i++) {
for (var j = 0; j < values[i].length; j++) {
if (values[i][j] == "Notes" || values[i][j] == "Billable" || values[i][j] == "Total") {
var col = j+1;
Logger.log("columns numbers found" + col);
deleteColumn(col);
}
}
}
}
필자가 생각하지 못하는 부분은 열이 삭제되기 시작했을 때입니다. 이것은 효과적으로 열의 수를 변경하므로 열의 수에서 시작하여 뒤로 (오른쪽에서 왼쪽으로) 시도하고 있습니다. 0..values.length-1
에서 그것을 인덱스를 의미하는 values
배열은 0을 기반으로
(var i = 1; i < values.length; i++)
:
나는 그 과정에서 범위를 변경하려고 했으므로 ... 그것이 정적 범위 A1 : T23을 설정했기 때문인 것으로 생각됩니다. 일단 첫 번째 열을 삭제하면 아마도이 범위는 존재하지 않을 것입니다. 동적으로 설정된 범위를 사용해보십시오. – andrewbuilder
원래는 sheet.getDataRange()를 사용하여 동적 범위를 시도했습니다. 그러나 여러 번 열을 식별하기 위해 다른 문제와 함께 여전히 같은 문제를 겪고있었습니다. – jjones312