2015-09-02 3 views
0

Я нашел этот скрипт и пытаюсь использовать его на листе Google. У меня возникла проблема в том, что я получаю сообщение об ошибке «У вас нет разрешения на вызов setValue (строка 8).», И когда я меняю значение, оно создаст только временную метку для первой записи в ячейке. Если я отредактирую ячейку, метка времени не изменится. Может кто-нибудь взглянуть на этот скрипт, чтобы понять, что не так. Извините, что я новичок в написании кода, и я не понимаю всех строк. Вот sheet Это сценарий, я использую:Сценарий OnEdit для изменения метки времени при редактировании строки (ошибка)

function onEdit() { 
var s = SpreadsheetApp.getActiveSheet(); 
    var r = s.getActiveCell(); 
    if(r.getColumn() != 2) { //checks the column 
    var row = r.getRow(); 
    var time = new Date(); 
    time = Utilities.formatDate(time, "GMT-08:00", "MM/DD/yy, hh:mm:ss"); 
    SpreadsheetApp.getActiveSheet().getRange('M' + row.toString()).setValue(time); 
    } 
} 

Для того, чтобы запустить сценарий, я напечатал = onedit (a3: l3), казалось, что единственный способ заставить его работать. Спасибо за любую помощь

спасибо за любые предложения.

+0

Зачем стоит [excel]? – pnuts

ответ

1

Попробуйте сделать следующие комментировали изменения в код

function onEdit() { 
    var s = SpreadsheetApp.getActiveSheet(); 
    var r = s.getActiveCell(); 
if(r.getColumn() != 2) { //checks the column 
    var row = r.getRow(); 
    var time = new Date(); 
    time = Utilities.formatDate(time, "GMT-08:00", "MM/DD/yy, hh:mm:ss"); 
// remove this line below 
SpreadsheetApp.getActiveSheet().getRange('M' + row.toString()).setValue(time); 

//replace with this line below 
return time; 
    } 
} 

Reference

Вы не можете установить значения в ячейку вне где обычай формула создается на таблицу, ее нелогично.

+0

Кажется, что некоторые пользовательские функции и скрипты onEdit немного путаются. OnEdit НЕ является настраиваемой функцией. – JPV

0

Если вы хотите даты/время Col M, когда правка сделана в Col B, попробовать что-то вроде этого:

function onEdit(e) { 
var s = SpreadsheetApp.getActiveSheet(); 
if(s.getName() !== 'Sheet1' || e.range.columnStart != 2 || e.range.rowStart < 2) return; 
e.range.offset(0, 11).setValue(e.value ? new Date() : ""); 
} 

Поскольку это не является onEdit там нет необходимости вводить формулу (= onedit ()) в электронной таблице. Обратите внимание: - удаление значения в столбце B приведет к исчезновению штампа (если вы этого не хотите, просто дайте мне знать). - формат col M как дата/время с помощью 123-кнопочного.

Посмотрите, поможет ли это?