getValues() 返回未定义

Sim*_*ton 1 google-apps-script

我正在尝试将一些数据从一张纸复制并粘贴到另一张纸上。我有以下数据结构->

我要复制的内容(sheet1):

dataname  value
data1     value1
data2     value2
data3     value3
data4     value4
Run Code Online (Sandbox Code Playgroud)

最终结果(sheet2):

day1 value1 value2 value3 value4
day2 value1 value2 value3 value4
day3 value1 value2 value3 value4
Run Code Online (Sandbox Code Playgroud)

如您所知,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]]);
}
Run Code Online (Sandbox Code Playgroud)

我知道这是一个非常基本的问题,但我仍然不明白getValues()真正的工作原理。使用上面的脚本,我得到以下结果:

undefined undefined undefined undefined undefined undefined undefined
Run Code Online (Sandbox Code Playgroud)

这是为什么 ?我该怎么办 ?

谢谢 !

Rob*_*ach 5

getValues()返回Object[][]值数组的数组。
当您运行时,var data = ss.getRange('B1:B10').getValues()[0][0];您取左上角的值并将其保存在data 中

我不知道那个单元格中有什么,但我假设它是一个空字符串,因为您从偏移量 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]]);
Run Code Online (Sandbox Code Playgroud)

sheet1它从第 2-7 行的第二列中取出并将其转置并将其附加到 sheet2。