Вставить данные, начинающиеся в столбце P таблиц Google (через скрипт)? - PullRequest
1 голос
/ 08 января 2020

Я пытаюсь разместить массив в столбце P ежедневно. Поскольку он публикуется ежедневно, я бы хотел, чтобы он также захватил последний ряд.

Я вытаскиваю из другой книги, но не знаю, как заставить пасту работать.

Function () {
  var toCopy = [copies data from spreadsheet 1]
  /* trying to paste into Aggregate tab in spreadsheet 2*/
  var ss2=SpreadsheetApp.openById(‘spreadsheet 2’);
  var tsh2=ss2.getSheetByName('Aggregate');
  var tsh2.getLastRow(???
}

Как вставить var toCopy в столбец P? Ширина массива 15 столбцов.

Ответы [ 2 ]

3 голосов
/ 08 января 2020
  • Вы хотите добавить значения в следующую строку последней строки столбца «P» на листе «Агрегат».
  • Значения - это двухмерный массив, который имеет 600 строк и 15 колонн.
    • Количество строк изменяется при каждом запуске.
    • Количество столбцов не изменяется.
  • После ввода значений вы хотите получить номер последней строки.

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

Поток:

  1. Получите номер последней строки столбца "P".
    • Из вашего вопроса я не уверен, является ли последняя строка столбца "P" последней строкой листа. Таким образом, последняя строка проверяется только для столбца «P».
  2. Добавить «toCopy» к следующей строке последней строки столбца «P».
  3. Получить текущий номер последней строки.

Модифицированный скрипт:

Пожалуйста, установите значения toCopy и идентификатор таблицы.

function myFunction() {
  var toCopy = [copies data from spreadsheet 1]

  var ss = SpreadsheetApp.openById('###');
  var sheet = ss.getSheetByName('Aggregate');

  // Retrieve the last row of the column "P".
  var lastRowOfColP = 0;
  var valuesOfColP = sheet.getRange("P1:P").getValues();
  for (var i = valuesOfColP.length - 1; i >= 0; i--) {
    if (valuesOfColP[i][0]) {
      lastRowOfColP = i + 1;
      break;
    }
  }

  // Put "toCopy" to the next row of the last row of column "P".
  sheet.getRange(lastRowOfColP + 1, 16, toCopy.length, toCopy[0].length).setValues(toCopy);

  // Retrieve the current last row number.
  var currentLastRow = lastRowOfColP + toCopy.length;
  Logger.log(currentLastRow)
}
  • This Модифицированный скрипт предполагает, что toCopy - это двухмерный массив.

Ссылки:

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

Похоже Установите значения диапазона - это то, что вам нужно.

function () {
  var values = [
    // Copied data from spreadsheet 1
  ]

  // Paste into Aggregate tab in spreadsheet 2
  var ss2 = SpreadsheetApp.openById(‘spreadsheet 2’);
  var sheet2 = ss2.getSheetByName('Aggregate');

  var range = sheet2.getRange('P1:P15');
  range.setValues(values);

  // Grab last row
  var lastRow = sheet2.getLastRow();
}

PS: следите за форматированием в вашем коде. Похоже, вы не используете правильный текстовый редактор . Ваше форматирование function будет Function, а цитаты 'spreadsheet 2' станут ‘spreadsheet 2’. Я использую VS Code и Vim, например.

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