Google Sheets APIを使用したSMS

最近、フリーランスの雇用主の友人が、SMSメーリングの組織に関連する小さな仕事に関する提案を受け取りました。そのデータは.xlsテーブルから取得する必要があります。 さらに、同じテーブルを編集する必須の機能を備えた企業のWebサイトに送信するというオプションの要望がありました。 同時に、最大2人日という非常に小さな予算が発表されました。



既存のWebベースのスプレッドシートツールの最小限の研究では、それらに基づいた開発には数倍の時間がかかることが示されています。 たとえば、 多数のPHPExcelといくつかのAJAXテーブルにより、本格的なサイトの機能が開発されました。 さらに、セキュリティのために個別のホスティングが必要です。 MS Excel + VBスクリプトオプションは理論的には考慮されていましたが、ここにも落とし穴がありました。 最終的に、選択はGoogleスプレッドシートで決まりました。



まず、Googleアカウントを持っている必要があります。 次に、それに入り、 http://sheets.google.com/にアクセスします。 ここで.xlsファイルをダウンロードできます。 テーブルをロードした後、最初のSMS送信スクリプトが作成されました。 特定の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<data.length; i++) //     { var dateSend = parseDate(data[i][3]); if(compareDate(dateToday, dateSend)) //     ,  sendHttpOneSms(sendText, data[i][5]); //    } }
      
      





このトリガーには2つの機能があります。 1つ目は単純です-compareDate。 彼女の仕事は、時間を考慮せずに2つの日付を比較することです。



2番目の関数はより複雑で、ボリュームが小さいにもかかわらず、書くのに多くの時間がかかりました。 事実は、セルから日付を読み取ろうとしたときに、他のタイプに自動的に変換できない、理解できない5桁の数字を受け取ったということです。 Google APIは、Date型のオブジェクトがあるべきだと言って、露骨に嘘をついていました。 そして、これは日付ではなく、文字列でさえあります。 明らかにUNIX形式(1970年1月1日の午前0時からのミリ秒数)に準拠していませんでした。 経験的に、この数値は1900年1月1日以降の日数を表している可能性が高いことがわかりました。 その後、日付を消化可能な形式に変換する機能が明らかになりました。



 function parseDate(dec) { return new Date((dec-70*365-19)*24*3600*1000); }
      
      





これで、トリガーを起動することができます。 これは、「現在のプロジェクトのトリガー」ウィンドウ(メニューの下の時計画像をクリックすると呼び出されます)を使用して実行できます。 スクリプトを実行して、プログラムでこれを行うこともできます。



 ScriptApp.newTrigger("dailySend") .timeBased() //   -   .atHour(12) //   -  12  .everyDays(1) //   -    .create();
      
      





便利なリンク



Google Spreadsheet API

ClockTriggerBuilderクラス

httpリクエストを使用するためのGoogle UrlFetchAppクラス




All Articles