javascript - 如何将工作表名称与数组元素进行比较并使用脚本在 Google 工作表上执行任务?
问题描述
目标是获取每个工作表名称并检查它是否不在数组中。如果不是,则将某些范围复制到“数据库”表中,然后比较下一张表,依此类推。
问题是它比较,它给了我-1
结果,它正在执行任务,而它不应该是,我看不出缺陷在哪里。
这是代码:
function concatenarResumos() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var databaseSheet = ss.getSheetByName("Database");
var processedSheetsRng = ss.getSheetByName("Suporte").getRange("F6:F").getValues().flat();
var shts = ss.getSheets();
for (var j = 0; j < shts.length; j++) {
for (var n = 0; n < processedSheetsRng.length; n++) {
if (processedSheetsRng[n].indexOf(shts[j].getSheetName() === -1)) {
shts[j].activate;
var sheetName = shts[j].getSheetName();
Logger.log("Sheet Name: " + sheetName);
Logger.log("Processed Sheet Name: " + processedSheetsRng[n])
var data = shts[j].getRange("C4").getValue();
var naoConforme = shts[j].getRange("B8:G12").getValues();
shts[j].getRange("B8:G12").copyTo(databaseSheet.getRange(databaseSheet.getLastRow() + 1, 2, 6, naoConforme.length), { contentsOnly: true });
var targetCol = databaseSheet.getRange('A:A').getValues();
var maxIndex = targetCol.reduce(function (maxIndex, row, index) {
return row[0] === "" ? maxIndex : index;
}, 0);
databaseSheet.getRange(maxIndex + 2, 1, naoConforme.length, 1).setValue(data);
}
}
}
解决方案
function concatenarResumos() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const dsh = ss.getSheetByName("Database");
const ssh = ss.getSheetByName("Suporte");
const svs = ssh.getRange(6, 6, sh.getLastRow() - 5).getValues().flat();
const shts = ss.getSheets();
for (let j = 0; j < shts.length; j++) {
for (let n = 0; n < svs.length; n++) {
if (~svs[n].indexOf(shts[j].getName())) {
let d1 = shts[j].getRange("C4").getValue();
shts[j].getRange("B8:G12").copyTo(dsh.getRange(dsh.getLastRow() + 1, 2, 6, d2.length), { contentsOnly: true });
let tcol = dsh.getRange(1, 1, dsh.getLastRow()).getValues();
let maxIndex = tcol.reduce(function (maxIndex, row, index) {return row[0] === "" ? maxIndex : index;}, 0);
dsh.getRange(maxIndex + 2, 1, d2.length, 1).setValue(d1);
}
}
}
F6:F
&之类的范围A:A
不适合与谷歌应用程序脚本一起使用,因为它们在数组末尾创建了很多需要过滤掉的空值。
推荐阅读
- javascript - 在没有连接 HOC 的情况下使用带有 react-hooks 的 redux
- php - 从单行获取具有多个值的mysql
- java - Spring security 在所有 api 端点上给出 401
- html - 将一个 div 固定到列的顶部,将另一个 div 固定到底部,两个不重叠
- http - 分块传输编码不适用于除 Firefox 之外的任何浏览器
- reactjs - 在 Next.js 的每次调用中获取用户数据并将其保存到 Context 是否是一种好习惯
- php - laravel,如何从 curl POST 方法返回视图 html 页面
- continuous-integration - 仅在前一阶段完成时运行管道阶段 - gitlabci
- scala - 如何 Promise.allSettled 与 Scala 期货?
- python - 读取 CSV 文件并将其连接到单个数据帧时出现问题