2015-07-09 3 views
0

Прежде всего, я знаю, что я опубликовал что-то похожее на это ранее, но у меня есть один ответ, который я не мог понять, и все. Итак, я пытаюсь сделать скрипт приложения для листов Google, чтобы иметь возможность увеличить значение числа в определенной ячейке каждый будний день. Я уже знаю, как настроить временный триггер для синхронизации, поэтому мне нужен только фактический код. Я знаю очень минимален о кодировании, и это лучшее, что я мог придумать:Google Spreadsheet Cycler

function onEdit(e) { 
    var range = e.range 
    var sheet = e.range.getSheet(); 
    sheet.getRange(range.getRow(), 1).setValue(e.(e + 1)); 
    } 

Когда я пытаюсь запустить его, он говорит:

TypeError: Cannot read property "range" from undefined.(line 2,file"") 

Любые идеи о том, как исправить это будет будем очень благодарны! Но, пожалуйста, пожалуйста, укажите, что noob может понять!

+0

Если вы используете код из редактора сценариев вместо редактирования листа, ничего не передается 'e'. –

ответ

1

Код, который у вас есть сейчас, находится на правильном пути, но с некоторым недоразумением.
Триггер onEdit - это триггер, но он не является временным. onEdit вызывается каждый раз, когда ячейка редактируется в электронной таблице. Если вы вызываете эту функцию из триггера, основанного на времени, он не будет передавать объект события (e), как если бы он был вызван редактированием, и именно поэтому вы получаете свою ошибку. Вместо этого измените свой триггер, основанный на времени, для вызова другой функции, которая не зависит от объекта события.
Я понимаю, что это статическая ячейка, которую вы увеличиваете (я имею в виду, что она всегда будет в одном месте), поэтому мое предложение - захватить электронную таблицу, захватить соответствующий лист, захватить ячейку, и отредактируйте его содержимое, похожее на то, что вы уже делаете, но более ручное. В коде, это будет выглядеть следующим образом:

function incrementCell(){ 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('SheetName'); 
    var value = sheet.getRange('B2'); 
    value.setValue(value.getValue() + 1); 

}

Просто заменить ваши листы имя и ваши клетки A1 нотация местоположение в код и указать триггер времени привода этой функции, и он должен работать вы.

+0

Я попытался использовать приведенный код, заменив «Листовое имя» и «В2» на соответствующую информацию, а ячейка i вернула это: – Riddler

+0

У вас нет разрешения на вызов setValue (строка 4). – Riddler

+0

Любые идеи, или это невозможно? – Riddler