Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
For loop 通过行创建for循环_For Loop_Google Apps Script_Google Sheets - Fatal编程技术网

For loop 通过行创建for循环

For loop 通过行创建for循环,for-loop,google-apps-script,google-sheets,For Loop,Google Apps Script,Google Sheets,我正在尝试制作一个脚本来替换模板文档(合同)中的信息。我已经让它在谷歌电子表格的列中运行,但是当试图重写它使它在电子表格的行中而不是列中运行时,它似乎不起作用。它只返回第一行中包含的信息。我怀疑这可能与for循环有关 下面是一段代码: function lagkontrakt() { const docFile = DriveApp.getFileById("DOC_FILE_ID"); const tempFolder = DriveApp.getFolde

我正在尝试制作一个脚本来替换模板文档(合同)中的信息。我已经让它在谷歌电子表格的列中运行,但是当试图重写它使它在电子表格的行中而不是列中运行时,它似乎不起作用。它只返回第一行中包含的信息。我怀疑这可能与for循环有关

下面是一段代码:

function lagkontrakt() {
  

  const docFile = DriveApp.getFileById("DOC_FILE_ID");
  const tempFolder = DriveApp.getFolderById("TEMP_FOLDER_ID");
  const pdfFolder = DriveApp.getFolderById("PDF_FOLDER_ID");
 
  var date = Utilities.formatDate(new Date(), "GMT+1", "dd/MM/yyyy");
  
  //copies the template//
  let copyFile = DriveApp.getFileById("FILE_ID").makeCopy(tempFolder);

  let copyId = copyFile.getId();
  let copyDoc = DocumentApp.openById(copyId);
  
  //fetches the content of the template//
  let copyBody = copyDoc.getBody();
  let copyHeader = copyDoc.getHeader();
  
  //defines active sheet//
  let activeSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("SHEETNAME");
  
  let numOfRow = activeSheet.getLastRow();
 
  //getRange(row, column, numRows, numColumns)//
  let activeCol = activeSheet.getRange(1,2,numOfRow,1).getValues();
  let headerCol = activeSheet.getRange(1,1,numOfRow,1).getValues();
 
  let rowIndex = 0
  
  //search loop//
  for (; rowIndex < headerCol[0].length; rowIndex++){
  
    copyBody.replaceText('{' + headerCol[rowIndex][0] + '}', activeCol[rowIndex][0]);
    copyBody.replaceText("{dato}", date);

    copyHeader.replaceText('{' + headerCol[rowIndex][0] + '}', activeCol[rowIndex][0]);
    
  }
  
  copyDoc.saveAndClose();

}
函数lagkontrakt(){
const docFile=DriveApp.getFileById(“DOC_FILE_ID”);
const tempFolder=DriveApp.getFolderById(“临时文件夹ID”);
const pdfFolder=DriveApp.getFolderById(“PDF文件夹ID”);
var date=Utilities.formatDate(新日期(),“GMT+1”,“dd/MM/yyyy”);
//复制模板//
让copyFile=DriveApp.getFileById(“文件ID”).makeCopy(临时文件夹);
让copyId=copyFile.getId();
让copyDoc=DocumentApp.openById(copyId);
//获取模板的内容//
让copyBody=copyDoc.getBody();
让copyHeader=copyDoc.getHeader();
//定义活动工作表//
让activeSheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“SHEETNAME”);
设numorrow=activeSheet.getLastRow();
//getRange(行、列、numRows、numColumns)//
让activeCol=activeSheet.getRange(1,2,numorrow,1).getValues();
让headerCol=activeSheet.getRange(1,1,numorrow,1).getValues();
设rowIndex=0
//搜索循环//
对于(;rowIndex
这是同一脚本的列版本,工作正常:

let numOfCol = activeSheet.getLastColumn();
  
  let activeRow = activeSheet.getRange(2,1,1,numOfCol).getValues();
  let headerRow = activeSheet.getRange(1,1,1,numOfCol).getValues();
  

  let columnIndex = 0
  

  for (; columnIndex < headerRow[0].length; columnIndex++){
  
    copyBody.replaceText('{' + headerRow[0][columnIndex] + '}', activeRow[0][columnIndex]);
    copyBody.replaceText('{dato}', date);

    copyHeader.replaceText('{' + headerRow[0][columnIndex] + '}', activeRow[0][columnIndex]);
    
  }
让numocol=activeSheet.getLastColumn();
让activeRow=activeSheet.getRange(2,1,1,numOfCol).getValues();
让headerRow=activeSheet.getRange(1,1,1,numOfCol).getValues();
设columnIndex=0
对于(;columnIndex
看起来A列中有变量,B列中有值。For循环当前将搜索的行限制为第一行的长度,也就是说,它将始终小于1

您需要更改:

for(;rowIndex

致:

for(;rowIndex


如果我对数据的布局方式不正确,那么您在几个位置反转了数组引用,得到的是整列而不是整行。

欢迎使用。您所说的“它看起来不起作用”是什么意思?脚本只返回电子表格第一行的值。