Как отразить обновленные значения ячеек во время цикла?

#google-apps-script #google-sheets #google-spreadsheet-api

#google-apps-script #google-sheets #google-sheets-api

Вопрос:

Я пытаюсь сделать мои обновления листа видимыми после их завершения.

Я написал этот код, чтобы продемонстрировать, что я пытаюсь сделать

 function sheetResponsivenessTest(){
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet8');
  if(sheet == undefined){
    sheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet('Sheet8');
  }
  sheet.getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn()).clear();
  for(var r = 1 ; r < 3 ; r  ){
    for(var c = 1 ; c < 3 ; c  ){
      sheet.getRange(r, c, 1, 1).setValue(r   '_'   c);
      Utilities.sleep(1000);
    }
  }
}
  

Что происходит, когда я запускаю этот метод, так это то, что через некоторое время я вижу, что все значения отображаются в одном кадре. Пока мне нужно видеть, как ячейки заполняются одна за другой. Увеличение продолжительности ожидания не помогло.

Ответ №1:

Вызовите SpreadsheetApp.flush() . Это приведет к тому, что он будет работать намного медленнее.

Комментарии:

1. У меня есть другой лист, который обновляет свои ячейки после их обновления, но я не так flush SpreadsheetApp , как вы указали здесь. Почему лист обновляет свои ячейки без необходимости flush обновления?

2. зависит от того, сколько данных вы записываете в электронную таблицу. сброс не требуется, просто обновление происходит сразу