google-apps-script - 用于在 forEach 循环中复制和粘贴先前 i 值的 Google Apps 脚本功能
问题描述
我从第三方那里得到一份员工名单。有些员工每月有不止一张工资单。所以列表的一列是员工 ID,第二列是“子 ID”。
以下是员工和 ID 列表的示例:
我想在 Apps Script 中运行一个函数,该函数复制员工 ID 的值并将其粘贴到空白单元格上(这样我就可以进行一些计算)。
我为“Legajo”数组创建了一个循环,但是当我到达 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);
});
}
解决方案
必读:
解决方案:
前一个值是主数组的i-1
. 所以,你可以参考你在里面迭代的数组forEach
示例脚本:
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));
});
或者,提供给 forEach 回调的第三个参数是主数组本身。function(legajoRow, i, arr)
. 所以,你也可以使用arr[i-1][0]
const numLegajos = /*Mock getValues()*/ [
[12],
[55],
[''],
[''],
[11],
[''],
[''],
['']
];
numLegajos.forEach(function(legajoRow, i, arr) {
if (legajoRow[0] === '') {
legajoRow[0] = arr[i - 1][0]; //set previousValue to this row's column element
}
});
console.log(JSON.stringify(numLegajos));
推荐阅读
- python - 如何将不同年份的月度价格回报合并到一个数据框中?
- reactjs - 在 ReactHook 中使用 Math.random
- php - 使用 Varnish 时修改路由和 url
- laravel - 使用行数据并将其插入 Laravel 中的另一个表中
- javascript - 尝试传递 HTML 代码和一些变量时不需要的逗号
- node.js - 如何让消费者只有在kafka创建主题后才能消费?
- python - 如何在数据集上计算 TF-IDF?
- php - Blockcypher/php-client 中的 CreateTransaction
- python - 获取 MASK 位置的多标记词的概率
- url - 页面速度正在监控错误的url