Создайте ежедневный трекер портфолио в Google Sheet с помощью importxml - PullRequest
1 голос
/ 27 мая 2020

Я пытаюсь отслеживать дневную стоимость и дату некоторых акций в таблице Google. В настоящее время код сбора данных работает хорошо, но при каждом изменении он заменяет все значения новыми. В A2 у меня есть ячейка, основанная на IMPORT XML, которая берет дату из Morningstar, и на B2, на основе SUBSTITUTE (SUBSTITUTE (import xml (CONCATENATE ..., которая берет дневное значение из FT.

)

Мой код скрипта теперь отображается следующим образом:

function saveData() {
  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("sheet1");
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("sheet2")

  var current_date = sheet.getRange('Tracker!A2').getValues();
  var current_value = sheet.getRange('Tracker!B2').getValues();

  sheet.appendrow([current_date, current_value]);

Трекер - это имя страницы. Выполняемый код сообщает мне, что я не могу getRange с нуля. В чем проблема, пожалуйста?

1 Ответ

0 голосов
/ 27 мая 2020

Как насчет этого ответа?

Точки модификации:

  • В вашем скрипте используются 3 названия листов: «sheet1», «sheet2» и «Tracker» . ss и sheet являются объектами листа для "sheet1" и "sheet2" соответственно. И, current_date и current_value извлекаются из «A2» и «B2» на листе «Tracker» соответственно.
    • В этой ситуации, я думаю, что причина ошибки Running code tells me that I cannot getRange from null. заключается в том, что лист с именем листа «sheet2» может НЕ быть включен в вашу электронную таблицу.
    • Но, в вашем скрипте используется sheet.appendrow([current_date, current_value]);. Итак, вы хотите поместить значения на лист "sheet2" или другой лист? Об этом я не могу понять из вашего вопроса.
  • Если вы хотите использовать appendrow, измените его на appendRow.
  • В вашем скрипте 2-мерный массив, полученный с помощью getValues(), используется как значение [current_date, current_value]. В этом случае, даже когда appendrow изменено на appendRow, в ячейку помещается значение типа [Ljava.lang.Object;@###.
  • Если вы хотите получить значения из ячеек «A2» и « B2 "на листе" Tracker "и вы хотите добавить полученные значения на лист, вы можете использовать Tracker!A2:B2 в качестве диапазона.

Когда указанные выше точки отражаются в вашем скрипте, он становится как

Измененный сценарий:

Пожалуйста, установите имя конечного листа на sheetName.

function saveData() {
  var sheetName = "###";  // Please set the destination sheet name.

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var value = ss.getRange('Tracker!A2:B2').getValues();
  ss.getSheetByName(sheetName).appendRow(value[0]);
}

Ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...