Я пытаюсь вызвать скрипт макроса / приложений листа google для переформатирования листа, когда в определенную ячейку вводится определенное значение. Я работал над этим, чтобы заставить его работать, но безуспешно.
Вот мой код;
function onEdit(e) {
var spreadsheet = SpreadsheetApp.getActive();
var sheet = SpreadsheetApp.getActiveSheet();
var cell = sheet.getRange('C2');
var cellContent = cell.getValue();
if(cellContent === 'Past campaigns - actual cashflows to date only') {
spreadsheet.getRange(ƍ:12').activate();
spreadsheet.getActiveSheet().hideRows(spreadsheet.getActiveRange().getRow(), spreadsheet.getActiveRange().getNumRows());
spreadsheet.getRange(ཉ:13').activate();
}
};
Я новичок в макросах и скриптах приложений. Я попытался реализовать все предложения по следующим ссылкам без успеха;
Всего 2 ответа
Как сказал @Cooper, вы не можете сделать триггер на основе значения ячейки. Только на пользовательских изменениях.
Вы можете попытаться заставить триггер onEdit
выполняться только внутри оператора if
. Но это уже то, что вы сделали.
Попробуй это:
function onEdit(e) {
e.source.toast('Entry');
const sh=e.range.getSheet();
if(sh.getName()!='Sheet Name')return;//you need to change this sheetname
const X=sh.getRange('C2').getValue();
if(X=='Past campaigns - actual cashflows to date only') {
e.source.toast('flag1');
sh.hideRows(e.range.rowStart,e.range.rowEnd-e.range.rowStart+1);
}
}
Нет необходимости использовать активацию в большинстве сценариев и, конечно, в этом, поскольку она должна завершиться за 30 секунд. Они используют активацию в макросах, потому что они следуют за вашими действиями, когда вы перемещаетесь по экрану. Но в сценарии, как правило, не нужно сильно взаимодействовать с экраном, потому что он замедляет сценарий и ничего не делает.
В настоящее время я использую скрипт, который запускается при открытии электронной таблицы, потому что в ней много строк, и я хочу, чтобы она опустилась до последней строки. Так что активация полезна, потому что мне не нужно прокручивать вниз до последней строки каждый раз, когда я открываю электронную таблицу.
попробуйте это так:
function onEdit(e) {
//e.source.toast('Entry');
var sh=e.range.getSheet();
if(sh.getName()!='Sheet Name')return;//you need to change this sheetnamee
var X=sh.getRange('C2').getValue();
if(X=='Past campaigns - actual cashflows to date only') {
//e.source.toast('flag1');
sh.hideRows(e.range.rowStart,e.range.rowEnd-e.range.rowStart+1);
}
}
Я надеюсь, что вы не пытаетесь запустить это из редактора сценариев, потому что это не сработает.