Установите примечания из столбца A на основе содержимого столбца B

#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, приятно знать, что есть более быстрый метод, спасибо