Как можно увеличить скорость копирования информации из одних столбцов в Google таблицах?

Как можно оптимизировать время выполнения данного кода, чтобы ускорить обработку? В задачу входит получение значения последней строки столбцов K, M, N, O, V, где значение L = e, и вставка этих значений в столбцы B:F после последних данных.
  • 20 марта 2024 г. 18:49
Ответы на вопрос 2
Для увеличения скорости копирования информации из одних столбцов в Google таблицах можно использовать следующие методы:

1. Использовать функцию ARRAYFORMULA для выполнения операций над массивами данных, что позволит уменьшить количество обращений к таблице и ускорить выполнение операций.

2. Использовать временные переменные для хранения значений и выполнения операций над ними, а затем вставлять их в нужные столбцы одним действием.

3. Оптимизировать код, избегая лишних циклов и условий, которые могут замедлить выполнение скрипта.

Чтобы оптимизировать время выполнения кода для получения значения последней строки столбцов K, M, N, O, V, где значение L = e, и вставки этих значений в столбцы B:F после последних данных, можно использовать следующий код:

```javascript
function insertData() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var range = sheet.getDataRange();
  var values = range.getValues();
  var lastRow = sheet.getLastRow();

  for (var i = lastRow; i >= 1; i--) {
    if (values[i-1][11] === 'e') {
      sheet.getRange(lastRow + 1, 2).setValue(values[i-1][10]);
      sheet.getRange(lastRow + 1, 3).setValue(values[i-1][12]);
      sheet.getRange(lastRow + 1, 4).setValue(values[i-1][13]);
      sheet.getRange(lastRow + 1, 5).setValue(values[i-1][14]);
      sheet.getRange(lastRow + 1, 6).setValue(values[i-1][21]);
      lastRow++;
    }
  }
}
```

Этот код проверяет значения в столбце L (индекс 11) и, если значение равно 'e', копирует значения из столбцов K, M, N, O, V (индексы 10, 12, 13, 14, 21) в столбцы B:F после последней строки. Он также выполняет это действие в одной итерации, что помогает ускорить обработку данных.

Применение указанных методов позволит увеличить скорость выполнения операций копирования и вставки данных в Google таблицах.
Не задавайте вопросы без примера! Мало того, что очень много непонятной косноязычной воды, так и примера данных нет!


Зачем вы делаете все те манипуляции - не понятно. Это последствия Excel?

Занимает доли секунды

/* exported userActionCopyValues */
function userActionCopyValues() {
  copyValues_('rg');
}

function copyValues_(e) {
  const sheet = SpreadsheetApp.getActive().getSheetByName('Ускорить работу скрипта');
  const dataRange = sheet.getDataRange();
  const values = dataRange.getValues();

  const lastValKMNOV = values.findLast((row) => row[11] === e);

  if (!lastValKMNOV) {
    console.warn(`lastValKMNOV ${lastValKMNOV}`);
    return;
  }

  const lastIndexBF = values.findLastIndex((row) => row.slice(1, 1 + 5).join(''));

  if (lastIndexBF === -1) {
    console.warn(`lastIndexBF ${lastIndexBF}`);
    return;
  }

  sheet
    .getRange(lastIndexBF + 2, 2, 1, 5)
    .setValues([[lastValKMNOV[10], lastValKMNOV[11], lastValKMNOV[12], lastValKMNOV[13], lastValKMNOV[21]]]);
}


Похожие вопросы