Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function onOpen() {
- SpreadsheetApp.getUi()
- .createMenu("> скрипты")
- .addItem("запустить отправку", "send")
- .addItem("запустить удаление", "del")
- .addSeparator()
- .addItem("создать триггер – поставить скрипты в расписание на каждые 15 минут", "setTrigger")
- .addItem("удалить триггер", "delTrigger")
- .addToUi()
- }
- function del() {
- const sheet = SpreadsheetApp.getActive().getSheetByName('удаление');
- const data = sheet.getDataRange().getValues();
- const telegramUrl = 'https://api.telegram.org/bot' + data[0][3];
- data.slice(5).forEach((row, i) => {
- const range_result = sheet.getRange(i + 6, 4, 1, 2);
- const date = d2s(new Date(), 'dd-MM-yy, HH:mm');
- const [chatId, msId, del_dt, del] = [row[0], row[1], row[2], row[3]];
- if (del != 'удалено' && (!del_dt || del_dt.getTime() < new Date().getTime()) && chatId && msId) {
- try {
- const result = deleteMessage(telegramUrl, chatId, msId);
- range_result.setValues([[JSON.parse(result).ok ? 'удалено' : 'не удалено', `${date}\n${result}`]]);
- } catch (e) {
- range_result.setValues([['не удалено', `${date}\nошибка: ${e.name}: ${e.message} \n${e.stack}`]]);
- }
- }
- })
- }
- function send() {
- const sheet = SpreadsheetApp.getActive().getSheetByName('отправка');
- const data = sheet.getDataRange().getValues();
- const telegramUrl = 'https://api.telegram.org/bot' + data[0][3];
- data.slice(5).forEach((row, i) => {
- const range_result = sheet.getRange(i + 6, 5, 1, 2);
- const date = d2s(new Date(), 'dd-MM-yy, HH:mm');
- const [message, chatId, reply_msg_id, send_dt, send] = [row[0], row[1], row[2], row[3], row[4]];
- if (send != 'отправлено' && (!send_dt || send_dt.getTime() < new Date().getTime()) && message && chatId) {
- try {
- const result = sendMessage(telegramUrl, chatId, message, reply_msg_id)
- range_result.setValues([[JSON.parse(result).ok ? 'отправлено' : 'не отправлено', `${date}\n${result}`]]);
- } catch (e) {
- range_result.setValues([['не отправлено', `${date}\nошибка: ${e.name}: ${e.message} \n${e.stack}`]]);
- }
- }
- })
- }
- function sendMessage(telegramUrl, chatId, message, reply_to_message_id) {
- return UrlFetchApp.fetch(telegramUrl + '/sendMessage', {
- method: 'post',
- contentType: 'application/json',
- payload: JSON.stringify({
- chat_id: chatId,
- text: message,
- parse_mode: 'MarkdownV2',
- reply_to_message_id: reply_to_message_id
- }),
- muteHttpExceptions: false
- })
- }
- function deleteMessage(telegramUrl, chatId, messageId) {
- const request = {
- method: 'post',
- contentType: 'application/json',
- muteHttpExceptions: true,
- payload: JSON.stringify({
- chat_id: chatId,
- message_id: messageId
- })
- };
- return UrlFetchApp.fetch(telegramUrl + '/deleteMessage', request)
- };
- function d2s(date, f) {
- return Utilities.formatDate(date, Session.getScriptTimeZone(), f)
- };
- function all() {
- del();
- send();
- }
- function setTrigger() {
- var ss = SpreadsheetApp.getActive();
- const owner = ss.getOwner().getEmail();
- const user = Session.getActiveUser().getEmail();
- if (user != owner) {
- ss.toast('Только владелец таблицы может установить триггер');
- return;
- }
- const triggers = ScriptApp.getUserTriggers(ss);
- for (var i in triggers) {
- if (triggers[i].getHandlerFunction() == 'all') {
- ss.toast('Триггер уже установлен');
- return;
- }
- }
- let trigger = ScriptApp.newTrigger('all')
- .timeBased()
- .everyMinutes(15)
- .create();
- ss.toast('Триггер установлен')
- }
- function delTrigger() {
- var ss = SpreadsheetApp.getActive();
- const triggers = ScriptApp.getUserTriggers(ss);
- for (var i in triggers) {
- if (triggers[i].getHandlerFunction() == 'all') {
- ScriptApp.deleteTrigger(triggers[i]);
- ss.toast('Триггер удалён');
- return;
- }
- }
- ss.toast('Ничего подходящего для удаления не найдено');
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement