Google apps script GoogleApps脚本函数,用于在forEach循环中复制和粘贴以前的i值

Google apps script GoogleApps脚本函数,用于在forEach循环中复制和粘贴以前的i值,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我从第三方得到一份员工名单。有些员工每月有一个以上的工资存根。因此,列表中的一列是员工ID,第二列是“子ID” 以下是员工和ID列表的示例: 我想在Apple脚本中运行一个函数,它复制雇员ID的值并粘贴到空白单元格上(这样我就可以做一些计算)。 我为“LeaJAO”数组创建了一个循环,但是当我到达if语句时,我不知道如何获取先前的值并将其设置为空白项。 function fillFile() { var ss = SpreadsheetApp.getActiveSpreadsheet()

我从第三方得到一份员工名单。有些员工每月有一个以上的工资存根。因此,列表中的一列是员工ID,第二列是“子ID”

以下是员工和ID列表的示例:

我想在Apple脚本中运行一个函数,它复制雇员ID的值并粘贴到空白单元格上(这样我就可以做一些计算)。

我为“LeaJAO”数组创建了一个循环,但是当我到达if语句时,我不知道如何获取先前的值并将其设置为空白项。

function fillFile() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("matriz");
  var numLegajos = sheet.getRange(3, 1, sheet.getLastRow() - 3).getValues();

  numLegajos.forEach(function(legajo,i) {

    if (legajo == "") {

      legajo = ?? // this is where I don't know what to do to get the previous value and set it to the blank item

  }

  Logger.log(legajo);

 });

}
说明:
  • 您需要使用展平
    numLegajos
    ,以便应用该方法

解决方案: 要求阅读:
解决方案: 前一个值是主数组的
i-1
。因此,您可以在
forEach

示例脚本: 或者,提供给forEach回调的第三个参数是主数组本身<代码>功能(legajoRow、i、arr)。因此,您也可以使用
arr[i-1][0]

const numLegajos=/*Mock getValues()*/[
[12],
[55],
[''],
[''],
[11],
[''],
[''],
['']
];
numLegajos.forEach(函数(legajoRow,i,arr){
如果(legajoRow[0]=''){
legajoRow[0]=arr[i-1][0];//将previousValue设置为此行的column元素
}
});
log(JSON.stringify(numLegajos))参见
function fillFile() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("matriz");
  var numLegajos = sheet.getRange('A3:A'+sheet.getLastRow()).getValues().flat(1);
  
  numLegajos.forEach( (legajo,index) => {
    if (legajo == "") {
      sheet.getRange(index+3,1).setValue(sheet.getRange(index+2,1).getValue())
  }
 }); 
}
numLegajos.forEach(function(legajoRow, i) {
  if (legajoRow[0] === '') {
    legajoRow[0] = numLegajos[i - 1][0]; //set previousValue to this row's column element
  }
  console.log(JSON.stringify(legajoRow));
});