Добавление метки времени при вставке новой строки или редактировании строки в Google Sheets - PullRequest
1 голос
/ 21 марта 2020

У меня есть:

  • Лист Google, который автоматически получает новые заказы на покупку через zapier
  • Заказы вставляются в виде новых строк, по крайней мере, имеют До сих пор, но я не знаю, могут ли они быть обновлены, могут быть отредактированы в будущем zapier
  • Данные о клиентах из заказов находятся в столбцах от A до JO
  • Приведенный ниже код, который является простой триггер с привязкой к контейнеру, доступ к которому можно получить, перейдя в Инструменты> Редактор скриптов на странице Google

Я хочу:

  • Чтобы добавить метку времени в столбец JP для новых или отредактированных строк

Я собрал приведенный ниже код из этого поста "Хотите создать метку времени для добавленного времени и создать уникального добавочного пользователя ID. А также включить последний измененный столбец ". Однако у меня есть проблема - когда я пытаюсь запустить это, я получаю следующее сообщение об ошибке:

"TypeError: Невозможно прочитать свойство 'source' из неопределенного (строка 6, файл" Код ")"

function onChange(e) {

var lastChangedTime = 276 //column JP

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = e.source.getActiveSheet

var now = new Date();

if (e.changeType == "INSERT_ROW") {


//set lastChangedTime when the row is created 
ss.getActiveSheet().getRange(ss.getActiveRange().getLastRow(), lastChangedTime, 1, 1).setValue(now);
   } 

  if (e.changeType == "EDIT") {

//set date in same row as edit happens, at fixed column  
ss.getActiveSheet().getRange(ss.getActiveRange().getLastRow(), lastChangedTime, 1, 1).setValue(new Date());

   }  
}

Может кто-нибудь сказать, что это за ошибка, посмотрев на этот код? Буду очень признателен за любую помощь!

РЕДАКТИРОВАТЬ 1:

Я хотел бы продолжить и рассказать всем, как эта проблема решена для меня. Я думал, что у меня есть одна проблема, но на самом деле у меня было две.

  1. Первая проблема заключалась в том, что я пытался «запустить» функцию OnEdit (e) из редактора сценариев, чтобы проверить ее. , который выбрасывал вышеуказанный код ошибки. Как правильно отмечает Chemi Adel, код должен быть изменен, чтобы включить этот тип теста.

  2. Вторая проблема, правильно определенная Матео Рэндвольфом в комментариях, заключалась в том, что я неправильно установил триггер. Чтобы установить триггер, начните с открытия листа Google, содержащего скрипт. Затем go до Инструменты> Редактор скриптов , чтобы открыть редактор скриптов. Редактор скриптов должен открыться на отдельной вкладке в вашем веб-браузере. Затем на вкладке редактора сценариев от go до Редактировать> Триггеры текущего проекта , которая откроет новую вкладку, показывающую триггеры для текущего проекта. Затем нажмите кнопку «Добавить триггер» в правом нижнем углу и установите параметры функции как Функция: OnChange , Развертывание: Head (я не знаю, что это значит, но это только опция для меня), Выберите источник события: из электронной таблицы и Выберите тип события: при редактировании . Я смог найти, как установить триггер в документации, с которой связался Матео Рандвольф.

Ответы [ 2 ]

4 голосов
/ 21 марта 2020

Триггеры редактирования присваивают onChange объект в качестве параметра 'e', ​​щелчок выполняется без определения 'e', ​​из-за ошибки создается объект, аналогичный структуре для тестирования 'e'

   function onChange(e) {
.....
//Overrid e just for testing
e={source:ss,
   changeType:'INSERT_ROW'}
.....

 }
1 голос
/ 02 апреля 2020

Я хотел продолжить и рассказать всем, как эта проблема решена для меня. Я думал, что у меня есть одна проблема, но на самом деле у меня было две.

  • Первая проблема заключалась в том, что я пытался «запустить» функцию OnEdit (e) из редактора сценариев, чтобы протестировать ее, что было выбрасывая вышеуказанный код ошибки. Как правильно отмечает Chemi Adel, код должен быть изменен, чтобы включить этот тип теста.
  • Вторая проблема, как правильно определил Матео Рэндвольф в комментариях, заключалась в том, что я неправильно установил триггер. Чтобы установить триггер, начните с открытия листа Google, содержащего скрипт. Затем go до Инструменты> Редактор скриптов , чтобы открыть редактор скриптов. Редактор скриптов должен открыться на отдельной вкладке в вашем веб-браузере. Затем на вкладке редактора сценариев go до Правка> Триггеры текущего проекта откроется новая вкладка, показывающая триггеры для текущего проекта. Затем нажмите кнопку «Add Trigger» в правом нижнем углу и установите параметры функции как Функция: OnChange, Deployment: Head (я не знаю, что это значит, но это только опция для меня), выберите Источник события: из электронной таблицы и выберите тип события: при редактировании . Я смог найти, как установить триггер в документации, с которой связался Матео Рандвольф.
...