Есть ли другой способ сбросить поля

#javascript #google-apps-script #google-sheets #google-sheets-api

#javascript #google-apps-script #google-sheets #google-sheets-api

Вопрос:

Я пытаюсь создать функцию сброса электронной таблицы, чтобы очистить электронную таблицу. Теперь я использую циклы для определения значений для каждого столбца. 'Dikte' Необходимо установить значение 6 . И первый столбец должен быть false . clearContent очищает все. Есть ли более приятный способ?

   var values = [];
  for (i = 0; i < 12; i  ) {
    values.push([false,'','','','','6','0'])
  }
  var oldoak_data = SS.getRangeByName('oldoak_data').setValues(values);
 

Таблица продуктов

Ответ №1:

Объяснение:

Решение 1:

  • Вы могли бы избавиться от for цикла, используя map. Это даст вам некоторый прирост производительности, поскольку map работает быстрее, чем обычные циклы.
  • Как правило, поскольку этот подход перезаписывает предыдущие значения, рекомендуется очистить содержимое перед установкой новых значений.

Решение 2:

  • Другой идеей было бы определить объект листа по его имени. В моем случае Sheet1 . Очистите только нужный диапазон 'A2:E13' и установите значения двух других столбцов 6 равными и 0 соответственно. Не уверен, что такой подход быстрее, но он может быть более эффективным.

Решения:

Решение 1:

 function resetFields() {
  const SS = SpreadsheetApp.getActive();
  const rng = SS.getRangeByName('oldoak_data');
  const values = rng.getValues().map(r=>[false,'','','','','6','0'])
  rng.clearContent();
  rng.setValues(values);
}
 

Решение 2:

 function resetFields() {
  const SS = SpreadsheetApp.getActive();
  const SH = SS.getSheetByName('Sheet1');
  const rngClear = SH.getRange('A2:E13');
  rngClear.clearContent();
  SH.getRange('F2:F13').setValue(6);
  SH.getRange('G2:G13').setValue(0);
}
 

Примерный лист для решения 2:

пример

Комментарии:

1. Решение 1, для меня это лучший подход. Решение 2, когда я добавляю новую строку перед столбцами заголовка. Изменяется относительная ссылка, например (A1:A10). Вот почему я использую именованные диапазоны.