Задать вопрос
@IgorPlays

Как записать изменённую строку в Google Sheets?

Я хочу чтобы когда изменяешь строчку в таблице,она записалась в другой лист со всеми данными этой строчки
Нашёл Скрипт, но он записывает только изменённую строчку
function onEdit(event){  
    if ((event.source.getActiveRange().getA1Notation()=="C2")||(event.source.getActiveRange().getA1Notation()=="E2")&&(event.source.getActiveRange().getA1Notation()=="G2")&&(event.source.getActiveSheet().getName()=="Тест")){
        var arc=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Лог");  
        arc.getRange(arc.getLastRow()+2,2,2,2).setValues([[event.source.getActiveRange().getValue(),]]);
        console.log(event.source.getActiveRange().getValue());
      
  };
};

Должен записать вот так 62188cc336fdc755403807.png

А записывает вот так > 62188cfc4ab54422968309.png
  • Вопрос задан
  • 171 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 1
@Oleg_F
Я бы так написал.
Сейчас как и в твоем коде, запишет только если были изменения в ячейке C2 или E2 или G2.

function onEdit(event) {
  const sheet = event.source
  const activeRangeA1Notation = sheet.getActiveRange().getA1Notation()
  const idRow = event.range.getRow();
  const maxCol = sheet.getLastColumn()

  if (activeRangeA1Notation == "C2" || activeRangeA1Notation == "E2" || activeRangeA1Notation == "G2" && sheet.getActiveSheet().getName() == "Тест") {

    let getValues = sheet.getActiveSheet().getRange(idRow, 1, 1, maxCol).getValues()

    const arc = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Лог");
    const lastRow = arc.getLastRow()
    arc.getRange(lastRow + 1, 1, 1, getValues[0].length).setValues(getValues);

  };
};
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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