ForEach循环组合来自2个相邻列的数据



我正在使用一个脚本根据电子表格数据生成命名文件(参考此处:https://www.bazroberts.com/2021/07/10/multiple-file-maker/)。基本上,它制作目标文件的副本,并根据图纸上某个范围的数据重命名这些副本。

脚本基于目标列中的数据创建文件名(variableNames(。我试图根据两个目标列的数据创建这些文件名,将相邻列的文档ID号添加到变量名中(因此文件名=docID+"+variableName…例如"1.2 DocumentName"(。

我已经捕获并存储了正确的范围:

let variableNames = shFiles.getRange(1, 3)
.getDataRegion(SpreadsheetApp.Dimension.ROWS)
.getDisplayValues();
let docIds = shFiles.getRange(1, 2)
.getDataRegion(SpreadsheetApp.Dimension.ROWS)
.getDisplayValues();
variableNames.splice(0, 2);
docIds.splice(0, 2);

我不知道如何调整创建文件名的forEach函数,使其同时使用两个可变数据段。这是一个有一段数据可供参考的版本:

//Extract file ID and get master file 
const masterFile = DriveApp.getFileById(fileId);
//Copy master for each of the variable names
//and rename each copy with the fixed and variable name 
variableNames.forEach((variableName) => {
masterFile.makeCopy(variableName);
})

我尝试过嵌套forEach,但最终做了一件递归的事情,基本上我有docID和variableName的每一个组合,而不仅仅是对齐的对。也许我应该对使用,而不是对每个

构造名称

function lfunko() {
const ss = SpreadsheetApp.getActive();
const masterFile = DriveApp.getFileById("fileId");
const sh = ss.getSheetByName("sheetname");
const vs = sh.getRange(3, 3, sh.getLastRow() - 2, 2).getDisplayValues();
vs.forEach(r => {
let id = r[0];
let n = r[1];
masterFile.makeCopy(`${id} ${n}`);
});
}

最新更新