如何使用Google脚本自动归档Google工作表?

时间:2019-01-13 22:20:25

标签: google-apps-script google-sheets

我有一个Google表格,该表格正在从html主页的表格中抓取数据。

数据在一个简单的Google工作表中,其中A1:H1包含标题/标签,A2:H2包含值

每次数据更改时,每次用新数据更新我的Google工作表时,我都希望A2:H2中的新数据被“存档” /自动复制到另一个Google(子)工作表中。

显然,我可以使用Google脚本(每天自动运行并带有触发器)执行此操作-我尝试在此处使用本教程:https://www.computerworld.com/article/2469616/business-intelligence/business-intelligence-79661-how-to-create-an-automatically-updating-spreadsheet.html#slide7

他们拥有/提供的代码是:

function storeData(){
var datarange = sheet.getDataRange();
var numRows = datarange.getNumRows();
var numColumns = datarange.getNumColumns();
var nextColumn = numColumns + 1;
sheet.getRange(1,nextColumn).setValue(new Date());
  for (var i=2; i <= numRows; i++){
var numLikes = sheet.getRange(i, 3).getValue();
sheet.getRange(i, numColumns + 1).setValue(numLikes);
}
}

运行此命令时,出现以下错误:“工作表”未定义

那么,是否需要在()之间放入要复制的数据范围?这样吗?

function storeData(){
var datarange = sheet.getDataRange(A2:H2);
var numRows = datarange.getNumRows();
var numColumns = datarange.getNumColumns();
var nextColumn = numColumns + 1;
sheet.getRange(1,nextColumn).setValue(new Date());
  for (var i=2; i <= numRows; i++){
var numLikes = sheet.getRange(i, 3).getValue();
sheet.getRange(i, numColumns + 1).setValue(numLikes);
}
}

运行此命令时,出现以下错误:在第2行中缺少“)”登录

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

您需要定义工作表。

function storeData(){

  var ss = SpreadsheetApp.openById('ID'); // Select Spreadsheet by ID
  var sheet = ss.getSheetByName('Name'); // Select your Sheet by its Name
  var datarange = sheet.getDataRange();
  var numRows = datarange.getNumRows();
  var numColumns = datarange.getNumColumns();
  var nextColumn = numColumns + 1;

  sheet.getRange(1,nextColumn).setValue(new Date());
  for (var i=2; i <= numRows; i++){
var numLikes = sheet.getRange(i, 3).getValue();
sheet.getRange(i, numColumns + 1).setValue(numLikes);
}
}

答案 1 :(得分:0)

发生第一个错误是因为未定义sheet。有几种定义它的方法。如果要存档的工作表始终相同,请使用

var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName('Sheet1'); // Replace Sheet1 by the actual name of the sheet to be archived

发生第二个错误,因为getDataRange不应包含任何参数。代替

var datarange = sheet.getDataRange(A2:H2);

使用

var datarange = sheet.getRange('A2:H2');