Почему скрипт зависает при выполнении в течение некоторого времени l oop? - PullRequest
1 голос
/ 14 июля 2020

Я пробовал что-то в скрипте Google Apps для своей электронной таблицы Google Sheets. По сути, он просто копирует ячейки на одном листе, переходит на другой лист, вставляет его, который обновляет кучу данных, затем копирует эти значения, возвращается на исходный лист и транспонирует эти результаты.

Итак, я он работал как макрос, но я бы хотел, чтобы он работал в al oop, чтобы он заполнял все строки на листе. Ниже представлена ​​копия моего кода:

function relcoprow() {
var spreadsheet = SpreadsheetApp.getActive();
var startloc = spreadsheet.getCurrentCell();
var rangetocopy = spreadsheet.getCurrentCell().offset(0,0,1,2);
var countnewcell = 1
var nextcell = spreadsheet.getCurrentCell().offset(countnewcell,0,1,1);
  while (nextcell!="") {
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Sheet4'), true);
  rangetocopy.copyTo(spreadsheet.getRange("A2"));
  spreadsheet.getRange('V1');

  spreadsheet.getSelection().getNextDataRange(SpreadsheetApp.Direction.DOWN).activate();
  spreadsheet.getRange('W1').activateAsCurrentCell();
  spreadsheet.getRange('V3:V1130').copyTo(spreadsheet.getRange('W3:W1130'), 
  SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  var rangetotranspose = spreadsheet.getRange('W3:W1130');

  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Sheet1'), true);
  rangetotranspose.copyTo(startloc.offset(0,7,1,1130), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, 
  true);
  nextcell = nextcell +1 
    }
  };

Когда я запускаю код, он застревает в этой строке и не продвигается вперед. Поскольку он застревает, я даже не могу увидеть, работает ли мой while l oop.

Может ли кто-нибудь дать совет, что мне делать?

1 Ответ

0 голосов
/ 14 июля 2020

Значит, мой l oop не застрял. Просто потому, что у меня не было кода для возврата go к листу 1.

Однако вся помощь с while l oop действительно тронула меня еще долго после того, как я понял проблема с active(). Мой l oop теперь работает.

Я использовал код для go до следующей строки после каждой итерации и сделал эту ячейку активной.

Для моего while l oop Я использовал !tickerloc.isblank(), чтобы программа знала, что ей нужно продолжать работать.

...