Как автоматически заархивировать лист Google с помощью скрипта Google? - PullRequest
0 голосов
/ 14 января 2019

У меня есть лист Google, который извлекает данные из таблицы с домашней страницы html.

Данные представлены на простом листе Google с A1: H1, содержащим заголовки / метки, и A2: H2, содержащим значения

Каждый раз, когда эти данные изменяются, каждый раз, когда моя страница Google обновляется новыми данными, я хочу, чтобы новые данные из A2: H2 "архивировались" / автоматически копировались на другой (вспомогательный) лист Google.

Очевидно, я могу сделать это с помощью Google Script (который затем запускается автоматически каждый день с триггером) - я попытался использовать это руководство здесь: 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 голосов
/ 14 января 2019

Первая ошибка возникает из-за того, что 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');
0 голосов
/ 14 января 2019

Вам нужно определить лист.

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);
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...