我试图将一些数据从一张纸复制并传递到另一张纸。我有以下数据结构 - >
我要复制的内容(sheet1):
dataname value
data1 value1
data2 value2
data3 value3
data4 value4
最终结果(sheet2):
day1 value1 value2 value3 value4
day2 value1 value2 value3 value4
day3 value1 value2 value3 value4
正如您可能理解的那样,sheet1上的数据每天都会在sheet2上刷新并复制。
以下是我使用的脚本:
function getdata() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("sheet1");;
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("sheet2")
var data = ss.getRange('B1:B10').getValues()[0][0];
sheet.appendRow([data[1],data[1],data[2],data[3],data[4],data[5],data[6]]);
}
我知道这是一个非常基本的问题,但我仍然不明白getValues()
是如何运作的。使用上面的脚本我得到以下结果:
undefined undefined undefined undefined undefined undefined undefined
为什么?我该怎么办?
谢谢!
答案 0 :(得分:3)
此处,在数据变量中,仅存储范围B1:B10的第一个值。您可以使用
查看其值Logger.log(data);
然后去查看 - >记录或在执行代码后按ctrl + enter。
现在,如果要以二维数组格式存储工作表值,则应使用:
var data = ss.getDataRange().getValues(); //Here, ss is what you have declared earlier
现在您可以使用记录器检查数据值。
或者,如果您只想在数组中使用B1:B10值,请按以下方式编写:
var data = ss.getRange("B1:B10").getValues();
现在你可以使用
了Logger.log(data);
Logger.log(data[3]);
你会得到你想要的东西。
答案 1 :(得分:3)
getValues()
返回Object[][]
,这是一组值数组
当您运行var data = ss.getRange('B1:B10').getValues()[0][0];
时,您将获取最左侧的值并将其保存在数据中。
我不知道那个单元格中有什么,但我认为它是一个空字符串,因为你从偏移量1开始对其进行子集化,它返回undefined而不是抛出异常。
你(可能)想要做的是这样的事情:
var data = ss.getRange('B1:B10').getValues();
sheet.appendRow([data[1][1],data[2][1],data[3][1],data[4][1],data[5][1],data[6][1]]);
从sheet1
获取第2-7行的第二列并对其进行转置并将其附加到sheet2。