Я новичок в скриптах, но хорошо разбираюсь в функциях листа. Мне удалось собрать эту функцию, которая работает как ВПР(). Мне не нужен 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);
}
Буду признателен за любую оказанную помощь!
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' && e.range.columnStart==1 && 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
Примечание: вы не можете запустить это из редактора скриптов. Он должен запускаться из устанавливаемого триггера, который предоставляет соответствующий объект события. Вы можете использовать Logger.log(JSON.stringify(e))
, чтобы узнать больше об объекте события.
Извините, А2, а не А1.
Да, это настройка только для формата A2. Столбец 1 Строка 2
Вы создали устанавливаемый триггер?
В сценарии? Я читал статьи ГАС, и я так понял, что это нужно было прописать в сценарии? Если да, то я старался изо всех сил.
Извините, я забыл, что вы не ложитесь спать, как вы помогли мне раньше. Я пробовал как написать триггер, так и использовать триггеры в редакторе скриптов, но безуспешно. Я почти уверен, что не правильно написал триггер.
Посмотрите в редактируемых/текущих проектах со старым редактором и посмотрите, есть ли у вас там настройка триггера.
Давайте продолжим обсуждение в чате.
Спасибо @Cooper! Это прекрасно работает! Идеальное решение!
Купер, спасибо, но я не могу заставить спусковой крючок работать. Также похоже, что у вас настроен скрипт для работы со всем столбцом A. Мне нужен только A1. Вот копия листа, над которым я пытаюсь работать. docs.google.com/spreadsheets/d/…