Автоматически добавлять текущую дату при заполнении ячейки - PullRequest
0 голосов
/ 09 июля 2020

Итак, я использую Google Таблицы, и у меня есть интеграция с Activecampaign, которая добавляет новую строку, когда новый пользователь подписывается. Я хотел бы добавить в информацию о пользователе текущий день, чтобы я мог знать, когда люди попали в мой список.

У меня 4 вкладки. Тот, который мне нужен в этот день, называется "leadData".

Я пробовал этот код, но он не работает:

function onChange(e) {
   var sheet = e.source.getSheetByName("leadData")
   columnToWatch = 1,
   columnToStamp = 7, //change all of these to your needs...1 is column A, 2 is column B, etc
   excluded = ["General Info", "Campaigns", "Automations"]; //add names of sheets/tabs to this list. The script will not work on these sheets.
   if (e.range.columnStart !== columnToWatch ||  !e.value || excluded.indexOf(sheet.getName()) > -1) return;
   sheet.getRange(e.range.rowStart, columnToStamp)
       .setValue(new Date()).setNumberFormat("MM/dd HH:mm");  
}

Кто-нибудь знает, как я могу его решить?

1 Ответ

0 голосов
/ 10 июля 2020

Ответ:

Поля source и range не являются частью объекта события для триггеров onChange. Вы должны указать лист и нужные строки напрямую.

Дополнительная информация:

Согласно документации по объектам событий , триггеру Google Sheets onChange() является устанавливаемым триггером и не имеет полей source или range в передаваемом им объекте события.

Изменения кода:

Лист необходимо указать напрямую. Измените следующую строку

var sheet = e.source.getSheetByName("leadData");

на:

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("leadData");

и замените

sheet.getRange(e.range.rowStart, columnToStamp)
     .setValue(new Date()).setNumberFormat("MM/dd HH:mm"); 

на

sheet.getRange(sheet.getDataRange().getNumRows(), columnToStamp)
     .setValue(new Date()).setNumberFormat("MM/dd HH:mm");

Надеюсь, это будет полезно вам!

Ссылки:

...