2013-05-24 3 views
0

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

function onEdit(e) { 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var target = SpreadsheetApp.openById("*************"); 
    var target_sheet = target.getSheetByName("Dashboard"); 
    var last_row = target_sheet.getLastRow(); 
    target_sheet.insertRowAfter(last_row); 
    var target_range = target_sheet.getRange("A"+(last_row+1)+":G"+(last_row+1)); 
    e.range.copyTo(target_range); 
} 

Любые идеи, что я делаю неправильно?

ответ

0

В сценариях приложений есть три типа триггеров - простые триггеры и устанавливаемые триггеры. onEdit() - пример простого триггера (имя неявно). И есть ограничения на то, что вы можете сделать внутри простого триггера. И это включает открытие другой таблицы.

Итак, приступим к решению. Переименуйте свою функцию на что-то еще, скажем onEdit1(). И настройте установочный триггер вручную и установите его для запуска каждый раз, когда электронная таблица будет отредактирована. Подсказка: Использовать ресурсы -> Триггеры текущего проекта из редактора сценариев

+0

Есть ли способ получить доступ к текущей ячейке, находящейся в onEdit1()? – initWithStyle

+0

Исправлено: я просто получил последнюю строку таблицы, а не использовал объект события. Благодаря! – initWithStyle