Паролингизни унутдингизми?
Login
Left, Right, Center Left, Center, Right Center, Left, Right



Gmail га келган янги хатлар хақида SMS орқали хабар қилиш

Gmail га келган янги хатлар хақида SMS орқали хабар қилиш

Бу мақолада Google Calendar ва Google Apps Script ёрдамида Gmail электрон почта хизматида жойлашган электрон қутига келган янги хатлар хақида SMS орқали хабар қилиш усули ёритилган. Бу жараён Google Docs'да сақланувчи скрипт ёрдамида амалга оширилади.



Унинг ишлаш "принцип"и қуйидагича: Ёзилган скрипт таймерда кўрсатилган маълум вақт оралиғида қутининг "Кирувчи" папкасини текшириб туради. Агарда у янги хат борлигини аниқласа, google calendar'да янги хат мавзуси билан бир хил бўлган янги ходиса тузади ва унинг учун SMS билдиришни ёқиб қўяди. Натижада сизга қуйидаги кўринишдаги SMS хабар келади:
Эслатма: Хат мавзуси @ сана вақт
Агар бу сизга қизиқ бўлса "Батафсил" ҳаволасини босинг.

Демак, бу ишни амалга оширишлик учун аввало сизни қўл телефонингиз рақами Google Calendar га боғланган бўлиши лозим.
Бунинг учун:

  1. http://calendar.google.com/ га кирасиз.
  2. Ғилдиракчали тугмачани босиб очилган менюдан Settings (Настройки) ни босасиз.
  3. Шунда Calendar Settings (Настройки календаря) бўлими очилади. У ердан Mobile Setup (Настройка для мобильных устройств) бўлимига ўтинг.

  4. Country (Страна) жойидан ўз мамлакатингизни танланг.
  5. Phone Number (Телефон) жойига мобил телефон рақамингизни киритинг.
  6. Мобиль алоқа операторингиз Google Calendar билан ишлай олиш имкониятини ушбу ҳаволага кириб билиб олишингиз мумкин.
  7. Send Verification Code (Отправить проверочный код) тугмасини боссангиз, текширув коди сизни мобил телефонингизга юборилади ва шу билан SMS жараёни текширилади.
  8. Хабарни олганингизда олинган текширув кодини Verification code (Проверочный код) жойига киритиб, Finish Setup (Завершить настройку) тугмасини босинг.
  9. Save (Сохранить) тугмасини босинг.

Энди скрипт янги хатлар билан тўғри ишлай олишлиги учун қуйидаги ишларни бажариш лозим:
1. GMail'да "SMSnotify" деб номланган янги Label (Ярлык) тузинг. Бунинг учун:
1.1 Gmail интерфейсининг чап тарафидаги бўлимлардан More (Ещё) ҳаволасини босинг:

1.2 Скроллбарни пастроққа тушириб, Create new label (Создать ярлык) ҳаволасини босинг:

1.3 Очилган жойда янги label номини киритиб, Create (Создать) тугмасини босинг:

2. Энди барча кирувчи хатларга SMSNotify label'ини қўйилишини созлашимиз лозим. Бунинг учун янги фильтр тузамиз:
2.1 GMail интерфейсининг юқори қисмида жойлашган излаш жойини ўнг тарафидаги пастга қараган чизиқчани босинг:

2.2 To жойига ўзингизни электрон манзилингизни киритинг ва Create filter with this search >> (Создать фильтр) ҳаволасини босинг:

2.3 Шунда фильтр ойнаси кейинги "бет"га ўтади. У ердан Apply the label тугмачасини белгилаб қўямиз ва уни ёнидаги label'лар рўйхатидан, хозиргина тузган SMSNotify lablel'имизни танлаймиз. Пастдаги Create filter тугмасини босамиз:

Шундай қилиб, бундан буёғига барча янги келган хатларга SMSNotify label'и белигланадиган бўлди.
3. Google Docs (https://docs.google.com) га киринг ва янги Script тузинг. Бунинг учун Create (Создать) тугмасини босамиз ва очилган менюдан Script (Скрипт) ни танланг:

Шунда скрипт лар билан ишлаш мухити - Google Apps Script очилади. Очилган диалог ойнасида Close тугмасини босинг:

Мухитда очиқ турган Code.gs файлидаги 3 қатор кодни ўчириб, уни ўрнига қуйидаги кодни киритинг:

01.function Notification()
02.{
03.var threads = GmailApp.getUserLabelByName('SMSnotify').getThreads();
04.var now = new Date();
05.
06.if(threads == 0) return; // агарда янги хатлар бўлмаса, ишни тугатамиз
07.
08.for(i in threads) // создаем события
09.{
10.CalendarApp.createEvent(threads[i].getFirstMessageSubject(),
11.new Date(now.getTime()+60000),
12.new Date(now.getTime()+60000)).addSmsReminder(0).setDescription('this-is-sms_notification-mark');
13.}
14.
15.label.removeFromThreads(threads); // "SMSnotify" label'ини олиб ташлаймиз
16.
17.Utilities.sleep(300000);
18.
19.var TodaysEvents = CalendarApp.getDefaultCalendar().getEventsForDay(now);
20.
21.for (i in TodaysEvents) // юборилгандан кейин тозалаймиз
22.{
23.if (TodaysEvents[i].getDescription()=='this-is-sms_notification-mark')
24.TodaysEvents[i].deleteEvent();
25.}
26.}

Google Apps Script жуда катта имкониятларни тақдим этади шунинг учун хам уларга алохида мақола ёзилиши лозим. Бу мақолада эса мен хар бир объект ва метод хақида алохида тўхталиб ўтирмасдан фақатгина улар нималигини ва нима учун ишлатилиши хақида айтиб ўтаман.
threads ўзгарувчисида SMSNotify label'и ёрдамида белиланган хатлар массиви сақланади.
Хатлар сони текширилганидан сўнг (агарда янгилари йўқ бўлса дастур ўз ишини тугаллайди), циклда янги ходисалар тузишга киришамиз. Бу ерда хар бир янги ходисага "белги" қўйилишига эътибор беришингизни сўрайман, чунки кейинроқ уларни тозалаш керак бўлади.

1.if(threads == 0) return; // агарда янги хатлар бўлмаса, ишни тугатамиз
2.for(i in threads) // ходисалар тузамиз
3.{
4.CalendarApp.createEvent(threads[i].getFirstMessageSubject(),
5.new Date(now.getTime()+60000),
6.new Date(now.getTime()+60000)).addSmsReminder(0).setDescription('this-is-sms_notification-mark');
7.}


now.getTime()+60000 — хозирги вақтда бир дақиқа қўшамиз
Ходисалар тузилиб, хабардор этишга созланганидан сўнг, "обработка" қилинган хатлардан label ни олиб ташлаш лозим:
label.removeFromThreads(threads);
Мен календарьни янги хатлар хақидаги ходисалар билан тўлдириб ташламасликни қарор қилдим, шунинг учун уни тозалаймиз. Бунинг учун скрипт бажарилишини 5 дақиқага тўхтатиб турамиз (энг юқориги белгиланиши мумкин бўлган вақт, миллисекундларда кўрсатилади) ва тозалаймиз.
1.Utilities.sleep(300000);
2.for (i in TodaysEvents) // юборилгандан кейин тозалаймиз
3.{
4.if (TodaysEvents[i].getDescription()=='this-is-sms_notification-mark')
5.TodaysEvents[i].deleteEvent();
6.}

Охирги қолган ишимиз - бу скриптни ишлатиб юборувчи триггерни тузиш. Бунинг учун Resources менюсини босиб, у ердан Current script's triggers (Триггеры текущего скрипта) бўлимини босамиз:

Бизга хар соатда бажарилувчи time-driven туридаги триггер керак. Биринчи бўлимдан Notification, кейингисидан Time-driven, Hour timer, Every hour ларни танлаймиз ва ўнг тарафдаги notifications ҳаволасини босамиз. Очилган ойнадан, via email at сизни_эл_почта@gmail.com ёнида турган ўчириш тугмасини босамиз. Бунинг сабаби биз скрипт бажарилишида рўй берган хатоликлар хақидаги SMS-ларни олмоқчи эмасмиз. ОК ни босамиз. Save ни босамиз:

Триггерни ишлаб кетиш шартлари ўзгаритирилиши ва скриптга киритилган ўзгаришларни сақлаш жараёнида, авторизация ойнаси очилиб туради. Унда Authorize тугмасини босамиз. Яъни, рухсат берамиз:

Энди скриптни сақлаб қўямиз ва скриптни текшириш учун уни ишлатиб кўрамиз:

Қўшимча:
SMS хабардаги фойдали символлар сонини кўпайтириш мақсадида, календарь номини калтароқ сўзга ўзгартириш мумкин, масалан "." га. Бу ишни календарь созлашларидан бажарилади. Бунинг учун:
1. Google Calendar га кирасиз.
2. Ғилдиракчали тугмачани босиб очилган менюдан Settings (Настройки) ни босасиз.
3. Шунда Calendar Settings (Настройки календаря) бўлими очилади. У ерда Calendars (Календари) бўлимига ўтасиз.
4. Пастдаги жадвалда сизни "календарь" ларингиз кўрсатилган бўлади. Улардан биринчиси сизни номингиз билан бошланган бўлиши мумкин. Масалан, мени календарим farkhod.dadajanov деб номланган эди. Ўша номни босаман.

5. Шунда календарь номини созлаш (Calendar Details) ойнаси очилади. У ерда Calendar Name жойига ўзим холаган номни киритасиз. Масалан: .
6. Save тугмасини босасиз.

Мавзуга алоқадор ҳаволалар:
Стандарт хизматлар бўйича ёрдамчи хужжатлар (инглиз тилида) — developers.google.com/apps-script/defaultservices
Хар хил help'лар (инглиз тилида) — developers.google.com/apps-script/articles

Мақолани Фарход Дадажонов ушбу мақола асосида тайёрлади.

Manba: http://virtualdars.uz

Share