google-apps-script - 搜索列以查看是否存在新数据并从那里继续
问题描述
Apps 脚本新手,想编写一个简单的函数来试水。不幸的是,我遇到了一些困难。我希望该函数检查 E 列并查看是否存在现有数据。如果是,我希望它在旁边的列中添加一个公式。否则什么都不做并检查下一行。运行下面列出的代码时出现错误:
例外:范围的起始行太小。
有人可以指出我到底做错了什么吗?
function dateToColumn() {
var ss = SpreadsheetApp.openById(dbGoogleSheet);
Logger.log('Google Sheet database used' + ' ' + ss.getName());
var dataSheet = ss.getSheetByName('Form Responses 1')
Logger.log(dataSheet.getName());
var rangeData = dataSheet.getDataRange();
var lastColumn = rangeData.getLastColumn();
var lastRow = rangeData.getLastRow();
var searchRange = dataSheet.getRange(2, 5, lastRow - 1, lastColumn - 1);
if (dataSheet.getName() === "Form Responses 1") {
var rangeValues = searchRange.getValues();
//Logger.log(rangeValues)
for (i = 0; i < lastColumn - 1; i++) {
for (j = 0; j < lastRow - 1; j++) {
// Logger.log(dataSheet.getRange(j,i));
if (rangeValues[j][i] !== null) {
dataSheet.getRange(j, i++).setFormula(`=YEAR(` + j, i + `)`);
}
}
}
} else {
return;
}
};
解决方案
除了另一个答案中提到的点之外,您还应该注意i
索引。
此外,您将错误的参数传递给该setFormula
方法。因此,根据您想如何使用公式YEAR
,您应该相应地重新格式化它。
因此,您应该更改此行:
dataSheet.getRange(j, i++).setFormula(`=YEAR(` + j, i + `)`);
至:
dataSheet.getRange(j+1, i+2).setFormula('=YEAR(' + (j, i) + ')');
参考
推荐阅读
- swagger - OpenAPI:您可以在示例中使用子组件吗?
- javascript - 如何在数据表中排序后生成序列号列
- javascript - 故事书:对象不是 Twig 组件上的函数
- c - C 中的 typedef 和函数指针
- javascript - Brainjs返回错误数据
- spring - @QuerydslPredicate 和 @EmbeddedId
- javascript - 没有 `crossorigin` 的脚本不会暴露它的错误?
- android - 登录或注册后,用户不会被定向到提要屏幕。(Flutter Firebase)
- programming-languages - 操作语义、指称语义和公理语义有什么区别?
- javascript - 使用 Apps 脚本识别未定义工作表中相同列中的重复值