Как заставить telegram бота проверять реагировать на сообщения из google sheets?
Всем привет! Кто может подсказать, как сделать так, чтоб при написании боту например сообщения "привет", "пока" , "жизнь" google script проверял совпадение текста в столбце google таблицы. Если например в ячейке C2, C3, C4 находятся слова "привет", "пока" , "жизнь", тогда бот отвечает текстом из ячеек B2, B3 и B4 соответственно?
У меня есть код, который заставляет реагировать на конкретное сообщение в коде, но не в гугл таблице.
const API_TOKEN = 'token';
const ssId = 'idtabl';
const ss = SpreadsheetApp.openById(ssId);
const telegramUrl = 'https://api.telegram.org/bot' + API_TOKEN;
const sheet = SpreadsheetApp.openById('').getSheetByName('');
function doPost(e) {
const update = JSON.parse(e.postData.contents);
const cmdSheet = ss.getSheetByName('Лист1');
const cmdValues = cmdSheet
.getRange(2, 1, cmdSheet.getLastRow() - 1, 3)
.getValues();
const cmds = cmdValues.map((row) => row[2]);
if (update.hasOwnProperty('message')) {
const msg = update.message;
const chatId = msg.chat.id;
const messageText = (msg.text || '') + (msg.caption || '');
const user = msg.from.hasOwnProperty('username') ? msg.from.username : '';
const userFirstName = msg.from.first_name;
const userLastName = msg.from.last_name;
const data = [
[new Date(), user, chatId, userFirstName, userLastName, messageText],
];
if (msg.text == 'привет') {
const payload = {
method: 'sendMessage',
chat_id: String(-519944610),
text:
msg.text +
' ' +
'<strong>' +
'айди ' +
'</strong>\n' +
' ' +
chatId +
' ' +
'юзернейм' +
' ' +
'@' +
user +
' ' +
userFirstName +
' ' +
userLastName,
parse_mode: 'HTML',
};
const opts = {
method: 'post',
payload: payload,
};
UrlFetchApp.fetch('https://api.telegram.org/bot' + API_TOKEN + '/', opts);
}
}
}
Ответы (1 шт):
Автор решения: contributorpw
→ Ссылка
Добавьте функцию поиска, например,
/**
*
* @param {GoogleAppsScript.Spreadsheet.Sheet} sheet
* @param {string} msg
* @returns {string | undefined}
*/
function getReplyFromSheet_(sheet, msg) {
const row = sheet
//.getDataRange()
.getRange('A2:C4') // По условию вопроса
.getValues()
.find((row) => row[2] === msg); // Индекс 2 - колонка C
return row ? row[1] : undefined; // Индекс 1 - колонка B
}
Теперь в коде бота вы сможете получить требуемый ответ.
// ... your master code before
const payload = {
method: 'sendMessage',
chat_id: String(-519944610),
text: getReplyFromSheet_(sheet, msg.text) || 'Ни шиша не найдено',
parse_mode: 'HTML',
};
// ... your master code after