Как настроить автоматическую отправку уведомлений в телеграм при добавлении новой строки в таблицу Google Sheets?

Как изменить скрипт, чтобы передавать данные при добавлении новых записей в Google таблицу, вместо отправки данных при изменении в ячейках? Например, после добавления новых данных с формы и записи их в таблицу, как сделать так, чтобы запустить триггер для отправки этих данных через Telegram бота?
  • 17 апреля 2024 г. 14:40
Ответы на вопрос 2
Для настройки автоматической отправки уведомлений в Telegram при добавлении новой строки в таблицу Google Sheets, вам понадобится использовать Google Apps Script. Вот как это можно сделать:

1. Откройте вашу таблицу Google Sheets.
2. Выберите "Инструменты" -> "Редактор скриптов".
3. В окне редактора скриптов напишите следующий код:

```javascript
function onFormSubmit(e) {
  var telegramBotToken = "YOUR_TELEGRAM_BOT_TOKEN";
  var chatId = "YOUR_CHAT_ID";
  
  var formData = e.namedValues;
  
  var message = "Новая запись в таблице:\n";
  for (var key in formData) {
    message += key + ": " + formData[key] + "\n";
  }
  
  var url = "https://api.telegram.org/bot" + telegramBotToken + "/sendMessage?chat_id=" + chatId + "&text=" + encodeURIComponent(message);
  
  var response = UrlFetchApp.fetch(url);
}
```

4. Сохраните скрипт и дайте ему имя.
5. Теперь создайте триггер для этого скрипта, который будет срабатывать при добавлении новой строки в таблицу Google Sheets. Для этого выберите "Ресурсы" -> "Триггеры проекта текущего проекта" и настройте триггер на событие "Изменение" -> "На отправку формы" -> "onFormSubmit".

Теперь, когда новые данные будут добавлены через форму в вашу таблицу Google Sheets, скрипт будет автоматически отправлять уведомление в Telegram. 

Чтобы передавать данные при добавлении новых записей из формы в Google таблицу, вам нужно модифицировать скрипт следующим образом:

```javascript
function onFormSubmit(e) {
  var telegramBotToken = "YOUR_TELEGRAM_BOT_TOKEN";
  var chatId = "YOUR_CHAT_ID";
  
  var formData = e.values;
  
  var message = "New data added:\n";
  for (var i = 0; i < formData.length; i++) {
    message += "Column " + (i+1) + ": " + formData[i] + "\n";
  }
  
  var url = "https://api.telegram.org/bot" + telegramBotToken + "/sendMessage?chat_id=" + chatId + "&text=" + encodeURIComponent(message);
  
  var response = UrlFetchApp.fetch(url);
}
```

Таким образом, при добавлении новой записи из формы в таблицу Google Sheets, скрипт будет собирать данные каждой колонки и отправлять их в Telegram. Далее, создайте триггер для события "На отправку формы" для этого скрипта, как описано выше.
Для того чтобы передавать данные в Telegram при добавлении новых записей в Google Таблицы, нужно использовать другой триггер в Google Apps Script, а именно onChange , который будет активироваться при любых изменениях в таблице, включая добавление строк. В вашем текущем скрипте вы используете onEdit , который срабатывает только при изменении ячеек. 

Пример скрипта, который будет использовать onChange для отслеживания добавления новых строк в таблицу и отправки данных в Telegram.

const token = '<Токен>'; // Токен вашего Telegram бота
const chatId = '<id>'; // ID чата в Telegram

function onChange(e) {
  var sheet = e.source.getActiveSheet();
  var ws = "Sheet1"; // имя листа
  var startRow = 2; // начальная строка
  
  if (sheet.getName() === ws && e.changeType === 'INSERT_ROW') {
    let lastRow = sheet.getLastRow();
    sendNewEntryToTelegram(sheet, lastRow);
  }
}

function sendNewEntryToTelegram(sheet, row) {
  let Name = sheet.getRange(row, 1).getValue();
  let Phone = sheet.getRange(row, 2).getValue();
  let Text = sheet.getRange(row, 3).getValue();
  var text = encodeURIComponent(Name + " " + Phone + " " + Text);

  var url = "https://api.telegram.org/bot" + token + "/sendMessage?chat_id=" + chatId + "&text=" + text;
  UrlFetchApp.fetch(url);
}


В этом скрипте:

Важные моменты:
1) Для работы onChange вам необходимо установить триггер в редакторе скриптов. Войдите в редактор скриптов Google Таблиц, затем выберите Триггеры -> Добавить триггер и установите onChange для запуска onChange функции.
2) Убедитесь, что у вас есть разрешение на отправку HTTP-запросов в вашем проекте Google Apps Script, а также что ваш Telegram бот правильно настроен для приема сообщений.
Похожие вопросы