・13行もkintoneのJavascriptではおなじみです。一覧の表示時に呼び出されるイベントです。14-16行は、複数のドロップダウンを出さないようにするためのステップです。ドロップダウンがあれば処理を終了します。19行から下は、jQueryのAjaxのお約束です。上に書いたようにkintone.proxyのほうがよいかも。呼んでいるわけですね。このphpについては下で解説しますので、少々おまちを。・26行から下は、データがきちんと取れた際の処理です。ここでselect部品やリンク部品を生成しています。27行がphpから取得した値をこちらで用意した変数に代入しています。36-37行は、初期値としてリンクに表示させる個人データ「全て」のリンクを表示しています。・ここではphpが貢いでくれたグループのデータをselect部品のoptionに代入しています。datalistは処理対象となるデータの種類です。初期値が個人データなので、個人データに対応するデータを配列に登録しています。・ここでは配列のデータ種別をselecgt部品のoptionに代入しています。メソッドを使い、上で生成したselect部品やリンク部品をkintone画面に表示しています。・66行目以下は、データ種別のselect値が変わった際に、リンクの表示文字列とurlを変更する処理です。・78行目以下は、グループのselect値が変わった際に、リンクの表示文字列とurlを変更する処理です。個人とグループではデータの種別も変わるため、リンクの文字列やurlもあわせて変動させねばなりません。いやはや、大変ですね。・以下は失敗した場合の処理です。ここはエラーメッセージなので、解説は割愛させてください。Liveで認証する部分です。・といっても、この部分はまだプログラマーですが何か?さんのページを参考させてもらい、それをかなりの部分で使わせて頂きました。Liveの認証部分は別phpファイルに切り出すなどの改良を加えています。cbl_oauth.phpにお任せしているのです。3,4行目は上に書いたようにさくらインターネットのスタンダードプランに入れたhttp_Request2とhttp_oauthを呼び出しています。サーバーに詳しくない方にとっては、この二つのインストールは厄介かもしれません。続いて、認証情報を格納する変数を三つ用意します。この三つの変数は以下の処理でも使うため、すぐ下のgetAccessTokenへは参照渡しをして、getAccessTokenの中で代入された値を使えるようにします。getAccessTokenを呼び出した結果をaccess_token_infoに格納します。getAccessTokenの戻り値は配列なので悪しからず。10行に書いているとおりヘッダーでおまじないをとなえます。Live)のデータをとってくるときに、このおまじないを忘れると、11行目に書かれているような反撃を食らうためです。白魔法の防御呪文のような感じです。・12行目のtryで処理を開始します。13行目のHTTP_Request2は上で読み込んだRequest2ファイルの中のクラスをインスタンスとして使いまっせ、ということです。14行目はssl_verify_peerをFalseにしています。SSL証明書の検証を要求しませーん、という意味です。17行目のHTTP_OAuth_Consumer_Requestは上で読み込んだOauthファイルの中のクラスをインスタンスとして使いまっせ、ということです。18行目は、HTTP_Request2の設定に基づいて一旦つながしてーや、という意味です。斥候みたいなもんです。20行目は斥候がまず様子見した接続を、本体が認証情報を掲げて大手を振って入場するための準備です。Liveの認証キーをHTTP_OAuth_Consumerに渡してあげるのです。厳重に4種類の通行許可証を渡してあげるわけです。Live城にアクセスします。26行目は、個人フォルダのパスです。Liveの個人Idはメールアドレスなのです。27行目はフル許可設定で個人フォルダのパスをなければ生成します。LiveのAPIのエンドポイントと定められたURLあてにリクエストを送ります。arrayの中にパラメーターを含めればいろいろとリクエストができますが、ここではグループ一覧をとりたいだけなので、パラメーターはなしで。apiの仕様はこちらに載っています。代入され、エラーがなければ40行に処理がいきます。apiに進呈されたグループ情報の配列に個人を加えるための初期値です。先に説明したインターフェースでは最初に「個人データ」がありました。45行目では先頭に「個人データ」が入った配列がグループデータに従って生成されます。47行目では、グループidに従って並び替えます。その際「個人データ」キーは0を指定しているので、かならず先頭です。48行目は、JavaScriptが読めるようなjson形式でデータを返してあげています。echoで返してあげるとJavaScriptはデータとして喜ぶのです。49行目以下はエラー処理。Liveで認証するコア部分です。・ここに各種認証キーを記載します。apiのデベロッパー登録してきたキーを書き込みます。apiのデベロッパー登録してきたシークレット値を書き込みます。apiがトークン取得用としてご用意しているurlを指定します。Liveのログインアカウントを書きます。Liveのログインパスワードを書きます。・続いて認証リクエストの部分です。先ほどの説明と重複する部分もあるので、21-28行までの処理は説明を割愛しますね。30行目では、OauthのsendRequestのメソッドに対して、urlや認証情報のつまったパラメータを渡してあげます。するとレスポンスにアクセストークンが戻ってくるのですね。あとは、phpのparse_str関数で$access_token_infoにトークン文字列を代入してあげるだけ。・エラーハンドリングの部分は、割愛でお願いします。ちなみに今回はkintoneのアプリ一覧画面上に実装しましたが、本当ならばポータルからダウンロードさせるのが親切な気がします。同じように実装すればいけるはずです。APIの制限事項と、kintoneの対応機能の検討。ところが、こうやって移行の検討を深めてみると、いくつか問題が出てきます。Q1.サイボウズLiveのユーザーをそっくりkintoneのユーザーとして移行できない。開発者ライセンスは5ユーザーしか作れないから。無料だからとたくさんアカウントを作ったはよいが、kintoneアカウントは有料ですから。↓A1.kintoneのユーザーやグループの利用はあきらめ、ドロップダウンか文字列(一行)にデータを入れるしかない。ユーザー一覧のアプリを作ってルックアップや関連レコードで連携させるとか。今回の記事ではドロップダウンか文字列(一行)か複数選択でお茶を濁しています。Q2.サイボウズLiveのAPIに用意されているファイルダウンロードがそもそも画像のみ。↓A2.画像しかとりこまないようにする。(ところが、今回は画像のアップロードの実装はしていません。・さくらインターネットのphpがftpサポート外だということをうかつにも忘れていまして。・sshでログインし、コマンドからphpのconfigureやmakeを行ってftpやsocketを有効化した。参考サイト、参考サイト・ところがそれにも関わらずダウンロードができない。調べてみたらさくらのftpサーバーがRETR未対応ということで、サーバー自体がphpのftpを頑として受け付けないということに気がつき万策尽きる。・curlだとローカル経由でアップロードした場合はfilekeyの取得ができるが、リモートURL経由ではresponseがNullになってしまう。・処理の一貫性の観点では、ファイルがローカルに自動的にダウンロードされる実装を加えないと、ダウンロードの時点で一度別処理を挟み、それ以降のkintoneアプリに添付ファイルを登録するためのfilekey取得をあらためて行う必要が・・・・Q3.サイボウズLiveのコメントをkintoneに移したい。ところが、APIトークン利用でのコメント追加だとコメント追加者がAdministrator扱いになってしまう。コメントの記載を各ユーザーで書かせるには、毎回認証ユーザーを切り替えねばならず、実装が面倒。↓A3.コメントについてはサブテーブルで実装しました。松田さんのご提供アプリでも一部サブテーブルでしたし。Q4.マイカレンダーにグループスケジュールへのリンクを実装するのが面倒。↓A4.アプリ間の連携を円滑にするには、リンクの設定が不可欠ですが、今回の記事では実装していません。Q5.スケジュールの日付範囲の取得がサイボウズLiveのAPIの仕様だと制限がある。Liveのスケジュールには通常予定と期間予定、繰り返し予定があります。その実装がちょっとひと手間必要なので、今回の記事では実装していません。LiveのAPIの仕様では、一回当たりのデータ取得件数が最大100件になっている。↓A6.これは再帰処理などで、実装可能だと思います。今回の記事では実装していません。