(Author : Fuji Business International Mamoru Fujinoki)
はじめに
年齢や勤続年数など、一定期間が経過すると更新が必要なデータをkintoneに保存した場合、自動的には更新されないため、後々困ってしまう事があります。
今回は、To Doアプリに残り日数フィールドを追加して、締め切りまでの日数を定期更新するデモプログラムをマイクロソフトの.NET開発環境で(C#) kintoneDotNET(.NET用 kintone API SDK)を利用して作成します。
1. 事前に必要なもの
- .NET Framework 4.0 以上
- Microsoft Visual Studio for Windows (今回は、Visual Studio Community 2017を使用)
- kintoneアカウント
2. 開発の流れ
以上の手順で開発して行きます。
kintone To Doアプリの設定
Step 1
kintoneアプリストアより、To Doアプリを追加します。
Step 2
To Do アプリを開き、ギアアイコンをクリックし、アプリの設定を変更する画面に移行します。
Step 3
以下のフィールドを後のコーディングの際使用しますので、テーブルを参考にフォームにフィールドの追加・変更、フィールドコードの確認を行います。変更後、「フォームを保存」をクリックします。
フィールドの種類 | フィールド名 | フィールドコード | その他 |
---|---|---|---|
数値 | 残り日数 | days_remaining | 単位記号:日、後ろに付ける |
日付 | 締切日 | Duedate | - |
日付 | 開始日 | From | - |
Step 4
次に「一覧」タブをクリックして、一覧に「残り日数」フィールドを追加します。
「残り日数」フィールドをドラッグアンドドロップで追加し、保存します。
最後に「アプリを更新」ボタンをクリックして、変更をアプリに反映させます。
これで、To Do アプリの設定は完了です。
Step 5
アプリ設定後、To Doのレコードを適当に追加します。
C#によるコンソールプログラムの作成
今回はマイクロソフトのVisual StudioのフリーバージョンVisual Studio Community 2017を利用して、C#でコンソールプログラムを作成します。
コンソールプロジェクトの新規作成
Step 1
Visual Studio Community 2017を開き、プロジェクトの新規作成で、「Console APP (.NET Framework)」をテンプレートとして選択します。(注:.NET Coreを選択するとkintoneDotNETがうまく作動しませんのでご注意ください。)
kintoneDotNet SDKのインストール
Step 2
「Tools」メニューから、「NuGet Package Manager」-「Manage NuGet Packages for Solution」を選択します。
Step 3
「Browse」タブを選択し、検索ボックスに「kintone」と入力し検索すると「kintoneDotNET」が表示されるので選択し、「Project」をチェックし、「Install」ボタンをクリックして、kintoneDotNET SDKをインストールします。
データモデルのコーディング
To Do アプリのkintone上のレコードを表現するモデルを作成します。
詳細については、こちらをご参照ください
Step 4
「Solution Explorer」より、Projectのアイコンを右クリック」し、サブメニューから、「Add」-「Class」を選択します。
Step 5
ファイル名に「ToDoModel」と入力し、「Add」をクリックして、モデルクラスのファイルをプロジェクトに追加します。
Step 6
下記を参考にToDoModelクラスを定義するコードを作成します。
解説
モデルクラス作成の際は、AbskintoneModelを継承し、更新を行いたいプロパティにはkintoneItem属性を設定します。(プロパティ名は、kintoneのフィールドコードと一致するようにしてください。 )上記のrecord_idフィールドのように更新対象外にしたいものはisUpload属性をFalseにします。また、重複しないキーにisKey=Trueを設定することで既存レコードを更新するUpdate処理を利用できます。
*モデル作成の詳細については、こちらのサイトを参照してください。
残り日数更新プログラムの作成
Step 7
以下を参考に残り日数の自動更新プログラムをProgram.csにコーディングします。
解説
ToDoModelより、kintoneDotNET ライブラリのfindメソッドが、直接実行できますので、以下のようにkintoneより、To Doアプリのレコードを取得します。締切日と開始日が既に入力されているレコードのみ抽出します。
以下のループで、各レコードにアクセスします。
既に開始日が経過している場合は、締切日と当日の日付より、残り日数を計算し、まだ開始していない場合は、締切日と開始日から残り日数を計算します。
最後にUpdateメソッドで、変更を更新します。
App.configの設定
App.configにて、kintoneへの接続のための設定をします。
Step 8
App.configの設定をプログラムから参照するため、まず、System.Configurationの.NET ライブラリーを追加します。「Solution Explorer」より、「References」を右クリックして、サブメニューから、「Add Reference」を選択します。
「Assemblies」カテゴリーより、「Framework」を選択し、「System.Configuration」のライブラリーにチェックを入れ、「OK」ボタンをクリックします。
これにより、ToDoModel.cs内でSystem.Configurationが参照できるようになります。
Step 9
App.configファイルを開き、以下を参考にkintoneへアクセスするためのパラメーターを設定します。
詳細あるいは、その他の設定につきましては、こちらを参照してください。
動作確認
Visual Studioにて、「F5」あるいは、「Start」ボタンをクリックして、プログラムを実行して、エラーがないか動作を確認します。
プログラム実行後、kintoneのTo Do アプリで「残り日数」が更新されていることを確認します。
まとめ
.NET用 kintone API SDKのkintoneDotNETを使うことで、kintoneのアプリだけでは難しいデータの更新プログラムを簡単に作成することができます。このプログラムをWindowsのタスクスケジューラ等で実行するように設定することで、データの定期更新が 可能になります。
他のシナリオとしては、一定時間毎にFTP経由で送られてくる在庫や売り上げの最新データを.NETでプログラムを作成して自動更新することも出来るのではないでしょうか。
参照サイト
このサンプルは、2017年11月版 kintoneで確認したものになります。
お世話になります.
記事,参考になりました.ありがとうございます.
使わせていただき,データを取得するところまで成功しました.
色々なフィールドを試す中で,「組織選択」の取得がうまくいきませんでした.
「組織選択」フィールドの場合,クラスファイル内の宣言はどのようにすればよいか教えていただけないでしょうか.
Ryusuke Takigawa 様
お世話になっております。cybozu developer network 運営でございます。
大変申し訳ありませんが、記事シナリオに直接的に関係のないご質問は
コミュニティをご活用頂きますようお願い致します。
有志からの回答を得られる場となっております。
以上、よろしくお願い致します。