2016年10月31日月曜日

FileMakerからGoogle Apps Script 経由で Google Calendar へイベント登録。

2016/12/04 更新



Google Apps Script 名前:calendar_library を作成
Googleドライブ
└新規
 └その他
  └Google Apps Script



名前:calendar_library
コード

var api_key は、任意で決めて下さい。



「実行APIとして導入」を設定


バージョン:1
スクリプトにアクセスできるユーザー:自分のみ



名前:calendar_library の スクリプト ID を確認。

ファイル
└プロジェクトのプロパティ


スクリプト ID をメモ帳などに保存し控えて下さい。(いつでも確認できます。)


Google Apps Script をもう一つ作成します。

Google Apps Script 名前:calendar_interface を作成
Googleドライブ
└新規
 └その他
  └Google Apps Script

名前:calendar_interface
コード

名前:calendar_library を
名前:calendar_interface のライブラリに登録

リソース
└ライブラリ


先程控えた、名前:calendar_library の スクリプト ID を「ライブラリを検索」に記入し、[選択]をクリック。

バージョン:1
識別子は、「calendar_library」に変更
デベロッパーモードは、「ON」





名前:calendar_interface
「ウェブアプリケーションとして導入」を設定





プロジェクト バージョン: 1
次のユーザーとしてアプリケーションを実行: 自分
アプリケーションにアクセスできるユーザー: 全員

「現在のウェブ アプリケーションの URL:」を控えておく。






「許可」する




プロジェクトの許可
一度、実行する




許可する


「parameter」を渡していないのでエラーになるが気にしない。


ここから、FileMaker

スクリプト:URLから挿入 で以下のように実行。

URLから挿入 「選択; Table::Result; "httpspost://script.google.com/macros/s/AKfycbw2.....TCw/exec?Title=タイトル&StartTime=2016/12/04 13:00:00&EndTime=2016/12/04 14:00:00&description=ディスクリプション&api_key=6a09d2c8-4a91-4a9b-91e4-276aa2fe011a"]

※「&api_key=」は、任意で決めて下さい。
 Google Apps Script 名前:calendar_library に設定した、api_key とあわせて下さい。

2016年10月25日火曜日

ChatWorkとGmailの連携。非FileMakerネタです。


ChatWorkにメッセージが投稿されると [To:*****] ○○さん 宛にメールを送信します。
送信元のGmailに返信するとChatWorkにメールの内容が投稿されます。

コミュニケーションツールは、ChatWork をメインに使っていますが、営業の社用携帯がガラケーなので、いちいちメール送るのが面倒!!!!!
なのでガラケーとの連絡もChatWork ですませてしましまいます。
イチイチメールソフト起動してメールアドレス選んで....とうっとうしい作業をしなくて良くなります。

ChatWorkメッセージの最初が [To:*****] で始まっていれば、メールを送信します。
なので、メール送受信用のルームでも[To:*****] で始まっていないメッセージなら通常通り使用できます。

「var Members =」にメールを送信したい人の「ChatWork ID」と「メールアドレス」を記述する必要があります。


以下のコードをGoogle Apps Scriptに記述。

「プロジェクトのトリガー」で「fire」を1分ごとに設定。





var CW_TOKEN = '********************'; //チャットワークAPIトークン
var ROOM_ID = '**********'; //チャットワークルームID



//{チャットワークID:メールアドレス}
var Members = {
   "264000" : "aaa@aaa.ne.jp"
,  "264000" : "bbb@bbb.ne.jp"
,  "263000" : "ccc@ccc.ne.jp"
,  "263000" : "ddd@ddd.ne.jp"
,  "264000" : "eee@eee.ne.jp"
,  "264000" : "fff@fff.ne.jp"
,  "271000" : "ggg@ggg.ne.jp"
}

function fire(){
  fetchContactMail();
  SendMailFromChatWork();
}



function fetchContactMail() {

  /* Gmailから特定条件のスレッドを検索しメールを取り出す */
  var strTerms = '(is:unread -from:cwmail "[cwmail]")';
  var thds = GmailApp.search(strTerms, 0, 500); //条件にマッチしたスレッドを取得、最大500通と決まっている
  //var thds = GmailApp.getMessagesForThreads(myThreads); //スレッドからメールを取得する →二次元配列で格納

    var row = 1;
    for(var n in thds){
        var thd = thds[n];
        var msgs = thd.getMessages();
        for(m in msgs){
            var msg = msgs[m];
            var from = msg.getFrom();
            var to = msg.getTo();
            var date = msg.getDate();
            var subject = msg.getSubject();
            var body = msg.getBody();
          var PlainBody = msg.getPlainBody().slice(0,200);

          Logger.log(subject+from);
       
       
              msg.markRead(); //メッセージを既読にする

          if ( from.match(/cwmail/)) {
          }else{
    /* メッセージを生成しチャットワークにを送る */
    var msgBody = "[hr]" + "\n" +
               "date:" + date + "\n" +
               "from:" + from + "\n" +
               subject +"\n" +
               PlainBody ;

    sendMessage(msgBody);
          }
       
            row++;
       
        }
    }

}



/*ROOM_IDのメッセージを読み込みメールを送信*/
function SendMailFromChatWork() {
    var params = {
    headers : {"X-ChatWorkToken" : CW_TOKEN },
    method : "get"
  };

  var url = "https://api.chatwork.com/v1/rooms/" + ROOM_ID + "/messages?force=0"; //指定のグループチャットからメッセージを取得
  var strRespons = UrlFetchApp.fetch(url, params); //チャットワークAPIエンドポイントからレスポンスを取得
try{
  var json = JSON.parse(strRespons.getContentText()); //文字列をJSON形式として解析しJSONオブジェクトとして返す
  }catch(e){
  return;
    }
  Utilities.sleep(500);
  //Logger.log(json);
  var sent_number = 0;//メール送信数
  /*
  for each(var obj in json){
  Logger.log(obj.body);
  }
  */
  for(var i=0;i// 処理
    var body =json[i].body + "\n\n" +
      json[i].account.name;

  /*宛先メールアドレス*/
  var myRegexp = /^\[To:(.*?)\]+/i;
  var match = myRegexp.exec(body);
    Logger.log(match);
  var ToCwID = match[1];
  var EmailTo=Members[ToCwID];
     //Logger.log(EmailTo);
    if(EmailTo){
      /*2行目をSubjectに設定*/
      var textArray = body.split(/\r\n|\r|\n/);
      var Subject = textArray[1];
      Subject += "[cwmail]";
   
      var EmailCc=Members[json[i].account.account_id];
      Logger.log(EmailCc);
      GmailApp.sendEmail(EmailTo,
                     Subject,
                     body,
                     {
                       /*
                       attachments: [file.getAs(MimeType.PDF)],
                       bcc: 'abc@g.com',
                     
                       from: 'abc@g.com',
                       */
                       cc: EmailCc,
                       name: 'cwmail'
                     });
      sent_number+=1;
      Utilities.sleep(500);
    }
  }//for(var.....
  if(sent_number>0){
  var notification="[info]メール送信済:"+sent_number+"[/info]";
  sendMessage(notification);
  }
}

/* 本文を受け取りメッセージを送る */
function sendMessage(body){
       var params = {
               headers : {"X-ChatWorkToken" : CW_TOKEN},
               method : "post",
               payload : {
                    body : body
               }
        };

     var url = "https://api.chatwork.com/v1/rooms/" + ROOM_ID + "/messages";
     UrlFetchApp.fetch(url, params);
  Utilities.sleep(500);
}


※いろんなサイトを参考にさせていただきました。ちゃんと記録していなかったので、参照元の表記ができません.....。コードは、コピペな部分が多々あります。

2016年9月27日火曜日

Mac OSX FileMaker で PowerShell を使う。


PowerShellが、Mac OSX 対応と言うことで、FileMakerと連携できないか?いじってみました。

バイナリパッケージがあるので簡単にインストール出来ます。

GitHub - PowerShell/PowerShell: PowerShell for every system! : https://github.com/PowerShell/PowerShell


 OS X版のPowerShellは、パッケージ(*.pkg)の形で配布される。Finderからダブルクリックでインストールを開始できるが、「開発元が未確認のため...」と表示されたときにはコンテキストメニューを表示し「開く」を選択しよう。
引用:http://ascii.jp/elem/000/001/217/1217507/


以下をFileMakerの スクリプト:「AppleScriptを実行」で実行すると、
PowerShellの戻り値が、フィールド:Result に入ります。


スクリプト:「AppleScriptを実行」
set Result to do shell script "/usr/local/bin/Powershell -command '$PSVersionTable;'"
set cell "Result" of current record to Result