如何引用具有多列的数组?

时间:2015-05-07 22:59:56

标签: google-apps-script

以下是我的代码。前两个值位于我的数组的第一列,我正确地提取值。值3在第8列中,但它只是拉出与值1相同的值。此外,它之后的地图和功能......我老实说不知道为什么,但没有它,我不返回值,而是对象,这就是它仍然存在的原因。在我使用.getRange(“A1”)。getValue(作为示例)调用每个值之前,我是新手使用数组,但我使用它太多次使脚本变慢并且经常超时。 (我在调用比这个例子更多的值。

var otherSheet= SpreadsheetApp.open(file).getSheetByName("Project Overview");

 var data = otherSheet.getRange("B3:I20").getValues().map(function(row){ return row[0];});


var value1 = data[1,1].valueOf();
var value2 = data[1,2].valueOf();
var value3 = data[8,1].valueOf();


sheet.setFrozenRows(1);
sheet.appendRow([value1, value2, value3]).sort(2);}

2 个答案:

答案 0 :(得分:0)

你不会使用地图。获取值返回一个二维数组,该数组作为数据[r] [c]进行寻址。因此,索引为零,因此R或C为零的第一项。以下指数可能需要相应调整。在B3以下提取的范围内,将是最左上角的项目,并将作为数据[0] [0]进行寻址。 B4数据[1] [0]和C5将是数据[2] [1]

var otherSheet= SpreadsheetApp.open(file).getSheetByName("Project Overview");

 var data = otherSheet.getRange("B3:I20").getValues();

var value1 = data[1][1]; // C4
var value2 = data[1][2]; // D4
var value3 = data[8][1]; // C11

sheet.setFrozenRows(1);
sheet.appendRow([value1, value2, value3]);

答案 1 :(得分:0)

我认为如果值3在第8列,你应该从var value3 = data[8,1].valueOf();获得该值

同样对于sheet.appendRow(),您可以简单地将这三个值添加到单维数组中,并将该数组传递给方法,如下所示:

var value[0] = data[1][1].valueOf();
var value[1] = data[1][2].valueOf();
var value[2] = data[1][8].valueOf();

sheet.setFrozenRows(1);
sheet.appendRow(value).sort(2);

希望有所帮助!如果这不是您要找的,请更新您的问题。