由于未声明的数组位置,从 google 脚本中轰炸
Bombing out of google script due to an non declared array position
我有一个非常大的二维数组(对于这种情况,我们只需要将其设为 20 行 x 5 列)。如果我在第 n 行,我必须检查第 n+1 行(比如第 3 列)是否小于第 n 行。问题是第 n+1 行 (data[nth+1] = []) 尚未创建,因此脚本爆炸。
(1) 有没有办法判断数组中的一行是否已创建?或
(2) 有没有办法告诉第 n+1 个数组位置尚未创建?我试过 isError_() 但那只是炸毁了脚本。
示例:
function tester() {
var data = [ [] , [] ];
data[1] = [];
data[1][1] = 10;
for (i=1 ; i < 5 ; i++) {
if (data[1][1] < data[i+1][1]) { Browser.msgBox("You have a problem", Browser.Buttons.OK);}
}
}
另外:有没有人对脚本编辑器有比 google 工作表脚本编辑器更好的建议。好像比EXCELSVBA编辑器晚了光年? EXCEL 允许您选择要查看的 3 或 4 个变量,而不是所有变量的总列表,然后您必须对其进行搜索。此外,当您使用 break 在函数中移动时,变量列表会不断更改和移动变量名称,这非常令人困惑。感谢您的任何建议。
数组长度:
您可以使用 Array 对象的 length property 根据外部数组 data
的长度来限制循环中的迭代次数。
你必须改变这个:
for (i=1 ; i < 5 ; i++) {
为此:
for (var i = 1 ; i < data.length - 1; i++) {
注:
- 如果使用
var i = 1
初始化循环,data
中的第一个元素将被忽略(数组索引从 0
开始)。如果您想避免这种情况,请将其更改为 var i = 0
。
参考:
我有一个非常大的二维数组(对于这种情况,我们只需要将其设为 20 行 x 5 列)。如果我在第 n 行,我必须检查第 n+1 行(比如第 3 列)是否小于第 n 行。问题是第 n+1 行 (data[nth+1] = []) 尚未创建,因此脚本爆炸。
(1) 有没有办法判断数组中的一行是否已创建?或
(2) 有没有办法告诉第 n+1 个数组位置尚未创建?我试过 isError_() 但那只是炸毁了脚本。
示例:
function tester() {
var data = [ [] , [] ];
data[1] = [];
data[1][1] = 10;
for (i=1 ; i < 5 ; i++) {
if (data[1][1] < data[i+1][1]) { Browser.msgBox("You have a problem", Browser.Buttons.OK);}
}
}
另外:有没有人对脚本编辑器有比 google 工作表脚本编辑器更好的建议。好像比EXCELSVBA编辑器晚了光年? EXCEL 允许您选择要查看的 3 或 4 个变量,而不是所有变量的总列表,然后您必须对其进行搜索。此外,当您使用 break 在函数中移动时,变量列表会不断更改和移动变量名称,这非常令人困惑。感谢您的任何建议。
数组长度:
您可以使用 Array 对象的 length property 根据外部数组 data
的长度来限制循环中的迭代次数。
你必须改变这个:
for (i=1 ; i < 5 ; i++) {
为此:
for (var i = 1 ; i < data.length - 1; i++) {
注:
- 如果使用
var i = 1
初始化循环,data
中的第一个元素将被忽略(数组索引从0
开始)。如果您想避免这种情况,请将其更改为var i = 0
。