1

当我运行我的脚本时,我收到以下错误消息:

语法错误:TypeError:无法从未定义中读取属性“1”。线: ?

这是我的脚本的一个片段:

var posConts = new Array();
var posContsData = SpreadsheetApp.openById(dataSheetValuesID).getSheets()[0].getRange('A:A');
var posContsDataValues = posContsData.getValues();

for (ii = 1; ii <= posContsData.getNumRows(); ii++) {
    iii = ii-1;
    posConts[iii] = posContsDataValues[ii][1];
}

我以前使用 values[0][0] 格式的集合没有问题。

这是一个错误吗?

谢谢。

4

3 回答 3

3

你混淆了索引。两个数组都从 0 开始(就像 javascript 中的所有数组一样)。但是您正在使用iiwhich 从 1 开始,从0 开始,posContsDataValues基于iii. posConts您还访问1了每一行的索引,这是错误的,因为您只得到一列A:A,而且它也是从零开始的。

我不确定您要做什么,但是从您的代码段来看,这是一个“固定”循环。

for( var i = 0; i < posContsDataValues.length; ++i )
    posConts.push(posContsDataValues[i][0]);
于 2012-05-06T14:36:29.887 回答
0

您使用 getValues 获得的数组按行和列索引,因此在您的情况下(数据范围 = 列 A)只有 1 个列索引,并且它由 [0] 引用,因为数组的索引为 0。并且您不应迭代超出数组长度。试试这样:

for (ii = 1; ii < posContsDataValues.length; ii++) {
    iii = ii-1;
    posConts[iii] = posContsDataValues[ii][0];
}

最好的问候, 塞尔吉

于 2012-05-06T14:12:36.163 回答
0

尝试iii=ii-1;改变iii=parseInt(ii)-1;

于 2012-05-06T21:54:26.267 回答