Javascript 谷歌应用程序脚本没有循环

Javascript 谷歌应用程序脚本没有循环,javascript,for-loop,google-apps-script,Javascript,For Loop,Google Apps Script,我是一名教师(这意味着我真的不知道自己在做什么),他正试图让我们的员工更快地完成常规文档。我已经创建了一个google工作表,可以将单元格行中的信息嵌入到google文档中。我想找出一种方法,当我运行脚本时,它将为每一行运行脚本,并将所有脚本收集到pdf中,这样我就可以一次打印多个学生的数据。下面是我正在运行此脚本的文档 有什么办法可以让这一切顺利进行吗?我当前拥有的脚本适用于第一行,但不会继续用于任何其他行 var data = sheet.getRange(4,1,sheet.getLas

我是一名教师(这意味着我真的不知道自己在做什么),他正试图让我们的员工更快地完成常规文档。我已经创建了一个google工作表,可以将单元格行中的信息嵌入到google文档中。我想找出一种方法,当我运行脚本时,它将为每一行运行脚本,并将所有脚本收集到pdf中,这样我就可以一次打印多个学生的数据。下面是我正在运行此脚本的文档

有什么办法可以让这一切顺利进行吗?我当前拥有的脚本适用于第一行,但不会继续用于任何其他行

 var data = sheet.getRange(4,1,sheet.getLastRow(),
 sheet.getLastColumn()).getValues();
//var data = sheet.getRange(4,1,1,sheet.getLastColumn()).getValues();


var i;
  for (i = 0; i < data.length ; i++) 
    var row = data[i++];{

  // setting up the temporary document
    var docid = DriveApp.getFileById(templateid).makeCopy().getId();
    var doc = DocumentApp.openById(docid);
    var body = doc.getBody();

 // I have removed the parts that gather data and the replace text.


    ss.toast("Creating your ALE document");
    Utilities.sleep(sleepINT);


  var file = DriveApp.getFileById(doc.getId());
  var newfolder = DriveApp.getFolderById("1oQ8evDj8dlHoDdX01DvZqjcIkSq31oen");
  var oldfolder = DriveApp.getFolderById("1IzY9PiobBC-O87AxCkU32j2n2wUU1zUE");
  newfolder.addFile(file);
  oldfolder.removeFile(file);

  ss.toast("PDF has been created!");
  Utilities.sleep(sleepINT);

  var usernamefordoctitle = sheet.getRange(4,1,1,1).getValues()
  var name = doc.getName();
  doc.setName(month + " ALE for " + studentName);
  ss.toast("Document has been named");
  Utilities.sleep(sleepINT);

  doc.saveAndClose();
  var pdffolder = DriveApp.getFolderById ("1iwBEUZpFwz_eaCVKemYozF5FA0_t0YGv");
  var pdfFILE = DriveApp.getFileById(doc.getId()).getAs('application/pdf');
  pdfFILE.setName(doc.getName() + ".pdf");
  var theFile = DriveApp.createFile(pdfFILE);
  pdffolder.addFile(theFile);
  ss.toast("Document has been saved to Google Drive");
  Utilities.sleep(sleepINT);

  var pdfEMAIL = DriveApp.getFileById(doc.getId()).getAs('application/pdf').getBytes();
  var message = "This is your" + month + "ALE documents for your AG student."
  var emailTo = emailAddress;
  var subject = "Your " + month + " ALE for " + studentName + " I'm pretty basic with loops, but shouldn't they be like so:

for (i = 0; i < data.length ; i++){ <--- the curly brace here.
var data=sheet.getRange(4,1,sheet.getLastRow(),
sheet.getLastColumn()).getValues();
//var data=sheet.getRange(4,1,1,sheet.getLastColumn()).getValues();
var i;
对于(i=0;ivar subject=“Your”+month+“ALE for”+studentName+”我对循环非常基本,但它们不应该是这样的:

for (i = 0; i < data.length ; i++) 
    var row = data[i++];

for(i=0;i
var row=data[i++];
之后的语句块不是for循环的一部分,for循环只包含一条语句

function myFuncion(){

}
例2:

for(变量i=0;i
  • 使用行终止符

  • 等等


  • 我已将行数减少到循环中的行数。如前所述,它只在脚本中运行一次,不会对脚本中的任何其他行重复。我添加了应该循环的整个函数,除了在嵌入google文档时替换文本。然后在执行后查看Stackdriver日志此外,请注意,您的迭代器
    i
    var row=data[i++]
    for(var i=0;i
    。应该是
    var row=data[i];
    您的“for”lop似乎没有开头的大括号(i=0;iIf序列号,例如
    if(a==b)c=d+e;
    @tehhowch有点奇怪,OP不想在“for”循环中包含多个语句,因为据我所知,他的主要问题在于“for”循环只执行一次。否则,循环的唯一目的就是更新“row”变量。但代码有点混乱,所以我可能“我在读一些东西。”安东德蒙蒂耶夫在我的请求下改变了他们问题中的代码(他们最初有一堵长墙,然后砍掉了一堆,然后又加了一些进去).在原始代码中,有一个大括号-因此我的评论是,我认为OP的问题与当前显示的代码无关。根据问题标题/描述,我认为我们都同意OP希望在for循环体中有几个语句。我投票决定关闭,直到OP可以用MCVE和日志/调试澄清他们的问题确认它只执行一次的信息。如果您查看问题中的原始代码,这不是问题。@tehhowch我可以理解,如果我的帖子批评了另一篇帖子,但此答案指向了当前问题修订版的答案。我答案中引用的代码是由OP on介绍的。
    for(var i = 0;i < data.length; i++){
    
    }