Данные снимка и добавление в указанное c местоположение в Google Sheets - PullRequest
1 голос
/ 22 января 2020

У меня есть Google Sheet, который я использую для отслеживания данных. У меня есть лист, который извлекает данные из нескольких листов в одной строке. В строке указана текущая дата для столбца B, а затем извлекаются данные для столбцов от C до A C. Я пытаюсь создать механизм для создания снимков этих данных и поместить их в следующую строку под ними. Мне нужна возможность продолжать делать это и продолжать нажимать на данные и сбрасывать ток на следующей строке. Это позволяет мне выбирать данные в столбце А для использования в графических целях. Вот что я использовал:

  function recordHistory() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getSheetByName("History");
    var source = sheet.getRange("B2:AC2");
    var values = source.getValues();
    var now = new Date();
    values[0][0] = now;
    for (var col in values) {
      sheet.getRange(sheet.getLastRow(),2,1,28).setValues(values[col]);
    }

Я использовал комбинацию примеров, и мне кажется, что я пересек провода с переводом с одного на другой. Нужна помощь, чтобы убрать это или указать мне лучший вариант. Первоначально я использовал appendRow, но это ограничивает меня использованием первого столбца. Я хочу, чтобы возможность поместить снимок во 2-й столбец и соответствующие столбцы после него. Надеюсь, это имеет смысл.

На этом листе вы можете видеть, как я перетаскиваю данные с первых двух листов на последний лист. Я пропускаю первый столбец и использую строку 2 в качестве точных значений. Предполагается, что приведенный выше скрипт берет то, что находится в строке 2, снимает его только как значения и перемещает данные в строку 3, перемещая предыдущие строки вниз. Это дает мне историю ценностей. Я буду использовать триггеры для запуска этой функции каждую ночь в полночь, поэтому данные будут ежедневно собирать значения. Надеюсь, это делает это немного более ясным.

РЕДАКТИРОВАТЬ 2: Позвольте мне попытаться упростить объяснение. У меня есть лист с данными в ячейках B2 через AC2. Я хочу захватить эти данные и скопировать их в ячейки B3 через AC3, перемещая данные вниз по строке. Итак, на листе вы должны увидеть ячейки B3: AC3, имеющие вчерашние данные. B4: AC4 имеет день раньше. B5: у AC5 есть день до этого. В основном ведение журнала данных, которые собираются в B2: AC2 каждый день.

Понятнее ли то, что я пытаюсь выполнить sh, или мне следует объяснить это дальше? Я действительно хочу исправить этот сценарий, чтобы я мог запланировать его запуск в выходные дни.

1 Ответ

0 голосов
/ 24 января 2020

После нескольких часов игры с синтаксисом и осознания, где была моя ошибка, я заметил некоторые проблемы с тем, как я собирал данные и пытался применить их к диапазону. Вот решение моей проблемы:

function recordHistory() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("History");
  var source = sheet.getRange("B2:AC2");
  var values = source.getValues();
  sheet.insertRowBefore(3);
  sheet.getRange(3, 2, 1, 28).setValues([values[0]]);
};

Как вы можете видеть из решения, я понял, как данные хранятся в массиве, и сопоставил их с частью скрипта setValues. У меня была довольно сложная проблема, но случай использования было трудно объяснить. InsertRowBefore также был жизненно важным элементом для создания sh структуры листа.

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