function namedRanges() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
for(var i=3; i<504; i++) {
var r = ss.getRange('A3:Q3'+i);
ss.setNamedRange('Song'+i, r);
}
}
Приведенная выше формула не идет по 500 строкам песни в моей электронной таблице и не называет каждую строку, «Песня 3» для строки A3-Q3 и т. Д. (Начиная со строки 3, поскольку у меня есть заголовки в строках 1 и 2) как я и ожидал.
Итак, я пытаюсь создать именованные диапазоны для всех 500 песен в листе.
Что я ожидаю:
Name - Range
Song3 - Songs!A3:Q3
Song4 - Songs!A4:Q4
Song5 - Songs!A5:Q5
etc.
Что я получаю:
Song3 - Songs!A3:Q33
Song4 - Songs!A3:Q34
Song5 - Songs!A3:Q35
etc.
Я потратил два дня, пытаясь отыскать это с помощью поиска (напрасно). Я уверен, что это легко. Кто-нибудь знает, как это сделать?
Улучшенная версия
Ниже приведена «новая и лучшая» версия скрипта, который я использую (который также включает ответ @Casper). Это «новый» и «лучший», потому что он подсчитывает количество столбцов в листе, а не принимает статическое значение, что делает его более гибким, так как он будет называть диапазон шириной листа, независимо от этой ширины (как измерено) по столбцам).
function namedRanges() {
var ss = SpreadsheetApp.openByUrl("url");
var sheet = ss.getActiveSheet();
//first column = 1
var numcols = sheet.getLastColumn()
Logger.log(numcols);
for(var i=101; i<501; i++) {
var r = sheet.getRange(i,1,1,numcols);//row, column, num rows, num cols
ss.setNamedRange('Song'+i, r);
}
}