我有一个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行中缺少“)”登录
有人可以帮忙吗?
答案 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');