Как запустить цикл идентификаторов Google Doc из Google Sheets - PullRequest
0 голосов
/ 08 ноября 2019

Я пытаюсь запустить цикл в сценарии приложения, но сценарий останавливается при повторном выполнении цикла.

Идентификатор документа Google поступает из списка в Google Sheet. Я могу заставить его работать без цикла, но как только диапазон листа обновляется, он не смотрит на следующий идентификатор. Кто-нибудь может увидеть, что пошло не так?

function myFunction() {
  var ss = SpreadsheetApp.openById('1LETEuEdYxyIxQtQgFWTwm3GgZWDAR5ehUUEIh_jN7zA');
  var sheet = ss.getSheetByName('Sheet1');
  var lr = sheet.getRange(2,5).getDataRegion(SpreadsheetApp.Dimension.ROWS).getLastRow();

  for(var i=0; i<lr+1; i++) { 
    var id = sheet.getRange(i+2,5,1,1).getValue();
    var doc = DocumentApp.getActiveDocument();
    var docInside = DocumentApp.openById(id).getBody();
    var text = docInside.getTables();
    var table = text[3].getNumRows();
    var val = text[3].getRow(2).getText();
    var pasteArea = doc.editAsText();

    pasteArea.appendText(val);

    var text = docInside.getTables();
    var loops = text[7].getNumRows();

    for(var i=0; i<loops-5; j++) { 
      var val = text[7].getRow(j+5).getText();
      var pasteArea = doc.editAsText();

      pasteArea.appendText(val);
    }
  }
};

1 Ответ

1 голос
/ 09 ноября 2019

Попробуйте это:

function myFunction() {
  var ss=SpreadsheetApp.openById('1LETEuEdYxyIxQtQgFWTwm3GgZWDAR5ehUUEIh_jN7zA');
  var sh=ss.getSheetByName('Sheet1');
  var lr=sh.getRange(2,5).getDataRegion(SpreadsheetApp.Dimension.ROWS).getLastRow();
  var vA=sh.getRange(2,5,lr-1,1).getValues();
  var doc = DocumentApp.getActiveDocument();
  for(var i=0;i<vA.length;i++) { 
    var docid=DocumentApp.openById(vA[i][0]);
    var tA=docid.getBody().getTables();    
    doc.getBody().appendParagraph(tA[3].getRow(2).getText());
    var rows=tA[7].getNumRows();
    for(var j=0;j<rows-5;i++) { 
      doc.getBody().appendParagraph(tA[7].getRow(j+5).getText());
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...