Основной цикл в Google Sheets - PullRequest
0 голосов
/ 19 июня 2019

Я пытаюсь использовать макрос, созданный в Excel в Google Sheets.Я впервые использую это, и у меня это работает, но кажется медленным по сравнению с Excel.Не уверен, что происходит и делает это так медленно.

Я перепутал с циклом кучу разных способов, но все еще кажется медленным.Он должен работать только около 20-50 раз.

Цикл должен быть:Когда A function loopscript() { var app = SpreadsheetApp; var activeSheet = app.getActiveSpreadsheet().getActiveSheet(); var num1 = activeSheet.getRange(3, 2).getValue(); var num2 = activeSheet.getRange(4, 10).getValue(); for(var i=1;num2 < num1;i++) { var num3 = activeSheet.getRange(6, 2).setValue(i); num2 = activeSheet.getRange(4, 10).getValue(); } }

1 Ответ

0 голосов
/ 19 июня 2019

Вы не устанавливаете значение для ячейки num2. Каждый раз, когда цикл запускается, он получает свое собственное значение из (4,10). Вы могли бы написать это так:

      num2++;
      activeSheet.getRange(4, 10).setValue(num2);

Кроме того, я рекомендую вам объявлять переменную num3 вне цикла, чтобы не делать это каждый раз:

      var num3;
      for(var i=1;num2 < num1;i++) {  
          num3 = activeSheet.getRange(6, 2).setValue(i);  
      ...

Или не объявлять его вообще, если вы хотите видеть только счетчик на листе: activeSheet.getRange(6, 2).setValue(i);

Вы также можете рассмотреть возможность использования цикла while:

      var i = 1;
      while (num2 < num1){
      num2++;
      ss.getRange(4, 10).setValue(num2);

      activeSheet.getRange(6, 2).setValue(i);
      i++;
      }

Вы также можете установить значение set вне цикла после того, как num2 и num1 равны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...