如何将一行数据从一个Google工作表粘贴到另一个工作簿中的另一个工作表

时间:2017-06-15 00:40:11

标签: google-apps-script google-sheets

运行此代码后:

function SendData() {
  var sss = SpreadsheetApp.openByUrl("URL"); // sss = source spreadsheet
  var ss = sss.getSheetByName('Verify'); // ss = source sheet
  var rangeToCopy = ss.getRange("B28:Q28");
  var copiedData = rangeToCopy.getValues();
  var tss = SpreadsheetApp.openByUrl("URL"); // tss = target spreadsheet
  var ts = tss.getSheetByName('log'); // ts = target sheet
  ts.appendRow(copiedData);
   
  
}  

脚本在单元格A1:

中向目标工作表写入一个如下所示的随机值

[Ljava.lang.Object; @ 70cb5117

我错过了什么?

1 个答案:

答案 0 :(得分:1)

getValues()方法获取2D数组。每个内部数组代表一行。每个内部数组的每个元素代表一个单元格。 appendRow()方法采用一维数组。因为您的范围只有一行数据,所以您可以将2D数组转换为1D数组,并使用appendRow()

copiedData = copiedData.toString().split(",");//convert 2D to 1D
ts.appendRow(copiedData);

如果您获得的行数超过1行,则无法使用appendRow()。您需要使用getRange(startRow,startColumn, numberOfRows, numberOfColumns).setValues(2D_Array)

看起来像这样:

var lastRow = ts.getLastRow();
ts.getRange(lastRow+1,1,copiedData.length,copiedData[0].length).setValues(copiedData);