#google-apps-script #google-sheets
Вопрос:
Я нашел этот короткий скрипт, который берет содержимое ячейки B1 и устанавливает его в качестве комментария/примечания к ячейке A1. Я хотел бы запустить это для всех строк, а не только для строки № 1 (или, более конкретно, строк 4-100). Как это может быть написано по сценарию?
function addNote() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var targetCell = sheet.getRange("A1");
var sourceCell = sheet.getRange("B1");
var noteText = sourceCell.getValue();
targetCell.setNote(noteText);
}
Большое спасибо
Ответ №1:
function addNote() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var values_range = sheet.getRange("A4:A100");
var notes_range = sheet.getRange("B4:B100");
var notes = notes_range.getValues();
values_range.setNotes(notes)
}
Ссылка
Ответ №2:
Вы можете использовать следующий код, который будет выполнять цикл по 400 row
вашему усмотрению:
function addNote() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
for (var i = 1;i<=400;i ){
var targetCell = sheet.getRange(i,1);
var sourceCell = sheet.getRange(i,2);
var noteText = sourceCell.getValue();
targetCell.setNote(noteText);
}
}
Комментарии:
1. Что ж, это действительно работает. Но… 800 получает 400 комплектов. это займет около 2 минут, чтобы закончить. И это может превышать лимит для запросов к серверу. Я настоятельно рекомендую использовать
getValues()
иsetNotes()
вместо этого.2. @YuriKhristich, приятно знать, что есть более быстрый метод, спасибо