Добавить onEdit в существующую функцию

#google-apps-script #google-sheets

#google-apps-script #google-sheets

Вопрос:

Я довольно новичок в скрипте, но хорошо разбираюсь в функциях листа. Я смог собрать эту функцию, которая работает как VLOOKUP (). Мне не нужен VLOOKUP (), потому что мне нужно иметь возможность перезаписывать ячейки, помещенные из функции, поэтому я обратился к сценариям. Этот скрипт работает при запуске, но я хочу, чтобы он запускался только при редактировании ячейки A2 в форме листа. Кто-нибудь может помочь мне добавить триггер onEdit?

 function lookUp() {
  var lookUpValue = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form").getRange("A2").getValue();
  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Current");
  var lr = ss.getLastRow()-1;
  var lookUpRangeValues = ss.getRange(2,1,lr,1).getValues();
  var newData = lookUpRangeValues.map(function(r){return r[0];});
  var index = newData.indexOf(lookUpValue) 2;
  var result = ss.getRange(index,2,1,22).getValues();
  var print = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form").getRange("B2:W2").setValues(result);

}
 

Любая помощь очень ценится!

Ответ №1:

 function onMyEdit(e) {
  //e.source.toast("Entry");//If you not seeing this then you don't have a trigger
  const sh=e.range.getSheet();
  //sh.getRange('B1').setValue(JSON.stringify(e));
  //sh.getRange('C1').setValue(sh.getName());
  if (sh.getName()=='Sheet3' amp;amp;  e.range.columnStart==1 amp;amp; e.range.rowStart==2) {
    //e.source.toast("Past the if");
    //sh.getRange('D1').setValue(e.value);
    var lookUpValue = e.source.getSheetByName("Form").getRange("A2").getValue();
    var ss = e.source.getSheetByName("Current");
    var lr = ss.getLastRow()-1;
    var lookUpRangeValues = ss.getRange(2,1,lr,1).getValues();
    var newData = lookUpRangeValues.map(function(r){return r[0];});
    var index = newData.indexOf(lookUpValue) 2;
    var result = ss.getRange(index,2,1,22).getValues();
    sh.getRange("B2:W2").setValues(result);
  }
}
 

И я думаю, вам понадобится устанавливаемый триггер onEdit

объект события onedit

Примечание: вы не можете запустить это из редактора сценариев. Он должен запускаться из устанавливаемого триггера, который предоставляет соответствующий объект события. Вы можете использовать Logger.log(JSON.stringify(e)) , чтобы узнать больше об объекте события.

устанавливаемые триггеры

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

1. Купер, спасибо, но я не могу заставить триггер работать. Также похоже, что у вас настроен скрипт для работы со всем столбцом A. Мне нужен только A1. Вот копия листа, над которым я пытаюсь работать. docs.google.com/spreadsheets/d /…

2. Извините, что A2 не A1

3. Да, он настроен только для A2. Столбец 1 Строка 2

4. Вы создали устанавливаемый триггер?

5. В сценарии? Я прочитал статьи GAS, и, насколько я понимаю, это нужно было записать в сценарий? Если это так, я старался изо всех сил.