Добрый день!
Для предотвращения дублирования сообщений при отправке из Google Apps Script в Telegram, вы можете использовать несколько подходов. Вот несколько идей:
### 1. Хранение состояний
Создайте отдельный лист или используйте свойства (PropertiesService) для хранения информации о том, какие сообщения уже были отправлены. Это можно сделать следующим образом:
1. **Создайте отдельный лист для хранения отправленных сообщений**. Этот лист будет содержать значения из столбца, отправленные ранее.
2. **Используйте свойства**. Например, используя `PropertiesService`, сохраните отправленные значения.
Вот пример кода, который показывает, как это может работать:
```javascript
function sendTelegramMessage() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const data = sheet.getRange('A1:A10').getValues(); // Замените диапазон на нужный
const properties = PropertiesService.getScriptProperties();
data.forEach(row => {
const value = row[0];
if (value === "<b>1</b>") {
// Уникальный идентификатор сообщения (можно использовать значение текущей строки или другой уникальный параметр)
const messageId = /* как идентифицировать это сообщение */;
// Проверка на дублирование
if (!properties.getProperty(messageId)) {
// Отправка сообщения в Telegram
const telegramUrl = 'https://api.telegram.org/botYOUR_BOT_TOKEN/sendMessage';
const chatId = 'YOUR_CHAT_ID';
const message = 'Новое сообщение: ' + value;
const options = {
method: 'post',
payload: {
chat_id: chatId,
text: message,
parse_mode: 'HTML'
}
};
UrlFetchApp.fetch(telegramUrl, options);
// Сохранение информации об отправленном сообщении
properties.setProperty(messageId, 'sent');
}
}
});
}
```
### 2. Временные метки
Если ваш сценарий запускается периодически (например, раз в час), вы можете хранить временные метки отправленных сообщений с использованием уникальных значений, чтобы убедиться, что одно и то же сообщение не будет отправлено повторно в течение какого-то времени.
### 3. Обработка других событий
Подумайте о том, чтобы отфильтровывать повторяющиеся значения только в рамках одного запуска скрипта. Для этого можно сохранять отправленные сообщения в массив на время выполнения скрипта и проверять его перед отправкой.
### Заключение
Выбор конкретного метода зависит от вашей логики работы и требований к сохранению данных. Использование `PropertiesService` является простым и эффективным способом для сохранения информации о состоянии. Не забудьте, что если вы используете отдельный лист, необходимо периодически очищать его, чтобы избежать переполнения.