将数据从一个Google电子表格保存到另一个电子表格以创建数据库

时间:2018-05-10 18:22:32

标签: google-apps-script google-sheets reporting

当我在营销方面工作时,我是Google App Scripts和JavaScript的新手。我目前正在尝试在Google表格中创建一个数据库,以便在DataStudio中使用,因为我希望混合各种来源的数据。

我有一张带有工作表的Google表格(通过附加组件)和另一张我打算用作数据库的工作表。我想要做的是将数据保存在数据库中,每次在电子表格的末尾保存新数据(我将在脚本工作时设置基于时间的触发器)。我使用Google的文档编写了一个脚本,但它只是将我的数据表的第一行复制到数据库中。我需要它将数据表中的所有内容复制到数据库表。

这是我现在的脚本:

// function to save data
function saveData() {
  // starts with active sheet for data entry
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Data");

  // collects values in data entry row
  var url = sheet.getRange("Data!A1:A").getValues();
  var follower_count = sheet.getRange("Data!B1:B").getValues();
  var date = sheet.getRange("Data!C1:C").getValues();  


  // identifies and adds data to Database
  var data1 = ss.getSheetByName("Database");
  var aVals = data1.getRange("A1:A").getValues();
  var aLastRow = aVals.filter(String).length;

  Logger.log(aLastRow);

  var newAttData = [[url,follower_count,date]];
  Logger.log(newAttData);

  data1.getRange(aLastRow +1,1,1,3).setValues(newAttData);

}

我试图改变最后一行的范围宽度和长度,但我总是收到错误:

  

范围高度不正确,为1,但应为3(第31行,文件"代码")

我花了很多时间在这上面,但我无法让它发挥作用。任何帮助都会很棒!

1 个答案:

答案 0 :(得分:0)

如文档中所述:

  

setValues方法(值)   设置矩形网格值(必须与此范围的尺寸匹配)。

var ss = SpreadsheetApp.getActiveSpreadsheet();  var sheet = ss.getSheets()[0];

  

//二维数组的大小必须与范围的大小相匹配。    var values = [      [“2.000”,“1,000,000”,“2.99美元”]    ];

var range = sheet.getRange(“B2:D2”);  range.setValues(值);

Reference