Добавьте переменную последней строки в переменную диапазона в Google App Script.

Вопрос или проблема

Я использую Google App Script. Я пытаюсь добавить переменную последней строки (N) в переменную диапазона (rngForForm), чтобы диапазон был динамическим, а не зашитым. Переменные left, sprLeft и setLeft работают, я просто не могу заставить переменную rngForForm принять значение N. Поэтому мне нужно, чтобы это выглядело так:
var rngForForm = "$B$3:$B(N variable here)";

function usingFunction2() {
  var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheetName="sprintuniquename";

  var selectedSheet = activeSpreadsheet.getSheetByName(sheetName);
  var mySheet = selectedSheet;
  var lastRow = mySheet.getLastRow();
  var N = lastRow;

  for (var i = 2; i <= N; i++) {
    var left="LEFT($A$3:$A" + N + ',3)';
    var sprLeft="LEFT($A$3:$A" + N + ',9)';
    var setLeft="LEFT($A$3:$A" + N + ',12)';
    var rngForForm = "$B$3:$B$1000";
  }

  var trimData = mySheet.getRange(rngForForm).setFormula(left);
  var sourceVals = trimData.getValues();```

Ответ или решение

Вам необходимо динамически установить диапазон (range) в Google Apps Script, чтобы он автоматически обновлялся в зависимости от последней строки данных в вашем листе. Основной проблемой, с которой вы сталкиваетесь, является конструкция строки диапазона, которая в данный момент является статичной.

Вот как можно создать переменную rngForForm, чтобы она использовала динамическое значение последней строки:

function usingFunction2() {
  var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheetName = "sprintuniquename";  // Имя вашего листа

  var selectedSheet = activeSpreadsheet.getSheetByName(sheetName);
  var mySheet = selectedSheet;
  var lastRow = mySheet.getLastRow();  // Получаем последнюю строку

  // Формируем диапазон на основе последней строки
  var rngForForm = "$B$3:$B$" + lastRow;

  // Создаём формулы
  var left = "LEFT($A$3:$A$" + lastRow + ',3)';
  var sprLeft = "LEFT($A$3:$A$" + lastRow + ',9)';
  var setLeft = "LEFT($A$3:$A$" + lastRow + ',12)';

  // Устанавливаем формулу в диапазон
  var trimData = mySheet.getRange(rngForForm).setFormula(left);
  var sourceVals = trimData.getValues();

  // Добавьте любые дополнительные операции с sourceVals, если это необходимо
}

Описание кода:

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

  2. Формирование строки диапазона: Вместо жестко закодированного диапазона "$B$3:$B$1000", мы создаем строку диапазона rngForForm динамически, используя переменную lastRow.

  3. Инициализация формул: Для формул left, sprLeft и setLeft также используется последняя строка. Это гарантирует, что в формулы всегда будут включены все доступные данные.

  4. Установка формулы в диапазон: После формирования динамического диапазона, мы устанавливаем формулу в указанный диапазон.

Заключение

Этот подход обеспечит гибкость вашего скрипта и автоматическое обновление диапазона в зависимости от количества данных. Использование переменной lastRow в строках формула и диапазона делает ваш код более чистым и уменьшает вероятность ошибок, связанных с изменением размеров данных в вашем листе.

Оцените материал
Добавить комментарий

Капча загружается...