google-apps-script - Google Apps 脚本在 for 循环中神秘地停止运行
问题描述
我正在构建一个系统来将数据从一张纸复制到另一张纸(在不同的电子表格上)。它运行良好,直到它应该复制数据。之后,它什么也不做。for
不会抛出错误,但不会在循环中弹出警告框。这是我的代码:
function onEdit() {
var sheet = SpreadsheetApp.getActiveSheet();
var master = SpreadsheetApp.openById('13x7AvyYTaocCVBxVZ3ckBjzgxcZfjg9RYM1cE_0VNbU');
var sheets = master.getSheets();
var test = DriveApp.createFile('Test', 'fetching user data...');
var name = test.getOwner().getName();
test.setTrashed(true);
var add = true;
for (var i = 0, n; i < sheets.length; i++) {
n = sheets[i];
if (n.getName() == name) {
add = false;
updateSheet(n, name);
}
}
if (add) {
newSheet(master, name);
}
}
function updateSheet(m, name) {
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn());
var nr = range.getNumRows();
var nc = range.getNumColumns();
for (var i = 1; i <= nr.length; i++) {
for (var n = 1, s; n <= nc.length; n++) {
s = range.getCell(i, n);
m.getRange(i, n).getCell(1, 1).setValue(s.getValue());
}
}
}
function newSheet(master, name) {
var m = master.insertSheet(name);
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn());
var nr = range.getNumRows();
var nc = range.getNumColumns();
for (var i = 1; i <= nr.length; i++) {
for (var n = 1, s; n <= nc.length; n++) {
s = range.getCell(i, n);
m.getRange(i, n).getCell(1, 1).setValue(s.getValue());
}
}
}
我已经搜索了代码,但找不到任何错误。
解决方案
显而易见的答案(感谢@Rubén)
在for
循环中,它说nc.length
and nr.length
。两者都getNumRows
返回getNumColumns
数字。由于这些是整数,.length
因此没有必要。
推荐阅读
- node.js - 属性或方法 * 未定义。渲染时出错
- c# - 从字符之间的字符串中读取超过两位数的变量c#
- r - group_by dplyr 没有分组
- python - 将带有 timedeltas 的 pandas 数据帧写入镶木地板
- php - Google Cloud Pub/Sub 推送消息 - 空 POST
- angular - Kendo Grid for Angular 2 Reactive FormArray
- jquery - Jquery ajax - 函数采用另一个函数响应
- python - 将 Python 应用程序连接到 Kubernetes 集群上的 Redis
- android - 在您的 android 主题中创建和使用 android drawable 引用
- ruby-on-rails - 从 Rakefile 调用 Rspec 方法