Я бы предложил прочитать на Простые триггеры и Устанавливаемые триггеры .
По сути, вы можете создать любую функцию и запустить ее, используя класс ScriptApp
, и они называются устанавливаемыми триггерами.
Но есть специальные функции, которые не чтобы сработать, вам нужно от go до ScriptApp
, вам просто нужно изменить имя функции, и это включит запуск этих функций.
Простой триггер
Просто измените имя функции, чтобы она автоматически начала запуск.
function onEdit(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet ();
var source = ss.getRange ("Copy!A1:N200");
var destSheet = ss.getSheetByName("Paste");
var destRange = destSheet.getRange(destSheet.getLastRow()+1,1);
source.copyTo (destRange, {contentsOnly: true});
}
Устанавливаемый триггер
Создайте еще одну функцию для выполнения вовремя создать триггер
function moveValuesOnly(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet ();
var source = ss.getRange ("Copy!A1:N200");
var destSheet = ss.getSheetByName("Paste");
var destRange = destSheet.getRange(destSheet.getLastRow()+1,1);
source.copyTo (destRange, {contentsOnly: true});
}
function createTrigger(){
var ss = SpreadsheetApp.getActive();
ScriptApp.newTrigger('moveValuesOnly')
.forSpreadsheet(ss)
.onEdit()
.create();
}
Вы указали в своем коде, что хотите запускать, только когда ячейка A10, но на данный момент это невозможно. Вам нужно создать оператор if
, чтобы убедиться, что редактируемый диапазон - это то, что вам нужно.
Посмотрите на объекты событий , потому что это будет входной параметр функций триггера (e
). Этот объект имеет информацию о редактируемом диапазоне и электронной таблице.
В основном создайте условие с e
объектом
function onEdit(e) {
var range = e.range;
var newValue = e.value;
var oldValue = e.oldValue;
var sheet = range.getSheet();
if(sheet.getName() == "<Your sheet name>" && newValue == 2 && range.getColumn() == 1 && range.getRow() == 10){
// Browser.msgBox("Edit entered condition");
//
// Do your stuff here when the condition is satisfied
}
}