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

    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...
    Ответ написан
    1 комментарий
  • Как указать название листа в Скрипте?

    BasiC2k
    @BasiC2k
    .NET developer (open to job offers)
    Меняете
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    на
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("лист7");
    Ответ написан
    1 комментарий
  • Как мне упростить формулу?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Вы тут перемножаете 2 диапазона, насколько я понимаю и суммируете их. Попробуйте посмотреть в сторону СУММПРОИЗВ, правда там придется вам покопаться немного со структурой диапазонов
    Ответ написан
  • Как мне упростить формулу?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    Что-то вроде:
    =ARRAYFORMULA(СУММ(
      ТРАНСП(G6:S6)*'Справичник'!$D$2:$D$14;
      T6:X6
    ))
    Ответ написан
    2 комментария