javascript - 为什么 getLastRow 方法无法正常工作
问题描述
使用 Google 表格,在将数据传输到“数据库”页面之前将数据输入到单元格中。
问题:
1) 传输完成后,以前的条目被新条目替换。
2) 数据库将从不同的行(即第 35 行)而不是第 1 行开始。
问题:是什么导致了这两个问题,以及如何解决这些问题?
下面是我的脚本。提前致谢!
function setValue(cellName, value) {
SpreadsheetApp.getActiveSpreadsheet().getRange(cellName).setValue(value);
}
function getValue(cellName) {
return SpreadsheetApp.getActiveSpreadsheet().getRange(cellName).getValue();
}
function getNextRow() {
return SpreadsheetApp.getActiveSpreadsheet().getLastRow() + 1;
}
function addTrade(a,b,c,d,e,f,g) {
var row = getNextRow();
setValue('Meta4!B' + row, a);
setValue('Meta4!C' + row, b);
setValue('Meta4!D' + row, c);
setValue('Meta4!E' + row, d);
setValue('Meta4!F' + row, e);
setValue('Meta4!G' + row, f);
setValue('Meta4!H' + row, g);
}
function submitTrade() {
addTrade(new Date(), getValue('Dashboard!N3'), getValue('Dashboard!N4'), getValue('Dashboard!N5'), getValue('Dashboard!N6'), getValue ('Dashboard!N7'), getValue('Dashboard!N8'));
var app = SpreadsheetApp;
var activeSheet = app.getActiveSpreadsheet().getActiveSheet();
activeSheet.getRange('Dashboard!N3:O8').clearContent();
}
解决方案
可能的问题:
getLastRow
在错误的工作表上执行- 可能的数据验证下拉列表/无法识别的值,直到第 35 行
- 代码重复
解决方案
- 先获取sheet再执行
getLastRow
- 从工作表中删除数据验证
- 使用 DRY 原则
流动:
- 将源工作表值作为数组获取,将当前日期添加到其中并转置数组。
- 从目标工作表中获取 lastRow 并 setValues 修改后的数组。
示例脚本:
function transposeWithDate() {
var cfg = {
ssh: 'Dashboard',//sourceSheet
sRng: 'N3:N8',//sourceRange
tsh: 'Meta4',//targetSheet
dt: new Date(),
};
var ss = SpreadsheetApp.getActiveSpreadsheet();
var source = ss.getSheetByName(cfg.ssh);
var values = source.getRange(cfg.sRng).getValues(); //[[1],[2],[3]]
var target = ss.getSheetByName(cfg.tsh);
var lastRow = target.getLastRow();
values.unshift([cfg.dt]); //add Date
var transposedVal = [ //transpose values [[date,1,2,3]]
values.map(function(e) {
return e[0];
}),
];
target
.getRange(lastRow + 1, 2, transposedVal.length, transposedVal[0].length)
.setValues(transposedVal);
}
参考:
推荐阅读
- postgresql - Postgres FTS。调整解析行为
- python - python中的id()函数和is运算符
- python - 你如何正确地从这个嵌套的 XML 中获取?
- reactjs - 为什么我的自定义钩子没有在路径更改时重新初始化?
- sql-server - 由于带有 SQL Server 配置文件的 Slick 中的表名周围有双引号,因此无法执行查询
- python - If 中的第二条语句没有被执行
- google-cloud-functions - 从 GCF 连接到 Google Cloud SQL 实例的最佳做法
- python - 为什么内置函数在 python 中没有被归类为可调用函数,如何让它们在我的程序中显示为可调用函数?
- r - R:循环删除 NA 只删除一些 NA?
- kotlin - 在 Kotlin 中使用委托实现时传递此引用