For loop 通过行创建for循环
我正在尝试制作一个脚本来替换模板文档(合同)中的信息。我已经让它在谷歌电子表格的列中运行,但是当试图重写它使它在电子表格的行中而不是列中运行时,它似乎不起作用。它只返回第一行中包含的信息。我怀疑这可能与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
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
如果我对数据的布局方式不正确,那么您在几个位置反转了数组引用,得到的是整列而不是整行。欢迎使用。您所说的“它看起来不起作用”是什么意思?脚本只返回电子表格第一行的值。