[Из песочницы] СМС-рассылка с Google Docs API

Недавно от знакомого фриланс-работодателя поступило предложение о небольшой работе, связанной с организацией смс-рассылки, данные для которой должны браться из .xls-таблицы. Плюс к этому было необязательное пожелание вынести эту же таблицу на корпоративный веб-сайт с обязательной возможностью её редактирования. При этом был озвучен весьма малый бюджет максимум на два человеко-дня.Минимальное исследование существующих веб-инструментов работы с электронными таблицами показало, что разработка на их основе потребует времени в разы больше. Например, связка PHPExcel и какой-нибудь AJAX-таблицы выливалась в разработку функционала полноценного сайта. К тому же требующего отдельного хостинга в целях безопасности. Теоретически рассматривался вариант MS Excel + VB script, но и тут были свои подводные камни. В итоге выбор пал на Google Docs.Прежде всего нужно иметь учетную запись Google. Далее, зайдя в нее, переходим на http://docs.google.com/ и выбираем в левом выпадающем меню «Таблицы». Сюда можно загрузить .xls-файл. После загрузки таблицы был написан первый скрипт отправки смс. Представляет собой формирование и отсылку определенного http POST запроса.

function sendHttpOneSms (msgStr, receiver) { var payload = { // данные для sms-рассылки «user» : «xxxx», «pass» :»*******», «action»: «post_sms», «message»: msgStr, «target»: receiver };

var options = { // опции для http-запроса «method» : «post», «payload» : payload, «muteHttpExceptions» : true };

var result = UrlFetchApp.fetch («http://сайт-рассылки/sendsms/», options); Logger.log (result.getContentText ()); } Далее формируем простейший ежедневный триггер. function dailySend () { var sendText = «Текст простого уведомления»; var sheet = SpreadsheetApp.getActiveSheet (); var data = sheet.getDataRange ().getValues (); // получение массива ячеек активного листа var dateToday = new Date (); // дата на сегодня for (var i=0; i

function parseDate (dec) { return new Date ((dec-70×365–19)*24×3600*1000); } Теперь осталось запустить наш триггер. Это можно сделать с помощью окошка «Триггеры текущего проекта» (вызывается при нажатии на изображение часов под меню). Также это можно сделать программно, выполнив скрипт: ScriptApp.newTrigger («dailySend») .timeBased () // Тип триггера — по времени .atHour (12) // время вызова — около 12 часов .everyDays (1) // Частота вызова — раз в день .create (); Полезные ссылки Google API для электронных таблицКласс ClockTriggerBuilderGoogle класс UrlFetchApp для использования http-запросов

© Habrahabr.ru