snstek
@snstek
Изучаю Google Sheets, Google Apps Script и JS

Как эту формулу прописать в Google Apps Script?

=ARRAYFORMULA(СУММ(
  ТРАНСП(G2:S2)*'Лист1'!$D$2:$D$14;
  T2:X2
))

Вот сама Таблица

65d34aaa697a9406651838.png

Я так понимаю, что через onEdit, но полноценно выстроить не хватает знаний и опыта.
Условие, изменения в данной вкладке, данной таблицы.
  • Вопрос задан
  • 108 просмотров
Решения вопроса 1
oshliaer
@oshliaer Куратор тега Google Apps Script
Google Products Expert
Положим, что вам нужно заменить работу функции, т.е. вернуть тоже самое значение, но только "вписать" данные скриптом

function calcData() {
  const book = SpreadsheetApp.getActive();

  const spravochnik = book.getRange("'Как заменить формулу скриптом'!M2:N5")
    .getValues().reduce((a, r) => {
      if (r[0] && r[1]) {
        a[r[0]] = r[1];
      }
      return a;
    }, {});

  const headersX = book.getRange("'Как заменить формулу скриптом'!D2:G2").getValues()[0]
    .map(h => spravochnik[h] || 0);

  const voprosData = book.getRange("Как заменить формулу скриптом!D3:G8")
    .getValues();

  const voprosData2 = book.getRange("Как заменить формулу скриптом!H3:I8")
    .getValues();

  const values = voprosData.map((row, j) => {
    return [row.reduce((a, v, i) => a + headersX[i] * v, 0)
      + +voprosData2[j].reduce((a, v) => a + v, 0)];
  });

  book.getSheetByName("Как заменить формулу скриптом")
    .getRange(3, 10, values.length, values[0].length).setValues(values)
    .activate();
}


Теперь можно назначить calcData как вызов для триггера события Edit. Если добавляете в событие, то нужно еще будет проверить имя активного листа и изменяемый диапазон.

65d36730515e7538286690.png

Пример в Таблице https://docs.google.com/spreadsheets/d/1zPuzdN7EtT...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы