cybozu developer network

カテゴリー内の他の記事

.NET用 SDK を使って、レコードの定期更新プログラムを作成してみよう!

(Author : Fuji Business International Mamoru Fujinoki)

はじめに

年齢や勤続年数など、一定期間が経過すると更新が必要なデータをkintoneに保存した場合、自動的には更新されないため、後々困ってしまう事があります。
今回は、To Doアプリに残り日数フィールドを追加して、締め切りまでの日数を定期更新するデモプログラムをマイクロソフトの.NET開発環境で(C#) kintoneDotNET(v.1.0.5)(.NET用 kintone API SDK)を利用して作成します。

1. 事前に必要なもの

  • .NET Framework 4.7.2 以上
  • Microsoft Visual Studio for Windows (今回は、Visual Studio Community 2022を使用)
  • kintoneアカウント

2. 開発の流れ

以上の手順で開発して行きます。

kintone To Doアプリの設定

Step 1

kintoneアプリストアより、To Doアプリを追加します。

DotNETSDK_01.png

Step 2

To Do アプリを開き、ギアアイコンをクリックし、アプリの設定を変更する画面に移行します。

DotNETSDK_02.png

 

Step 3

以下のフィールドを後のコーディングの際使用しますので、テーブルを参考にフォームにフィールドの追加・変更、フィールドコードの確認を行います。変更後、「フォームを保存」をクリックします。

フィールドの種類 フィールド名 フィールドコード その他
数値 残り日数 days_remaining 単位記号:日、後ろに付ける
日付 締切日 Duedate -
日付 開始日 From -

DotNETSDK_14.png

Step 4

次に「一覧」タブをクリックして、一覧に「残り日数」フィールドを追加します。

DotNETSDK_03.png

「残り日数」フィールドをドラッグアンドドロップで追加し、保存します。

DotNETSDK_04.png

最後に「アプリを更新」ボタンをクリックして、変更をアプリに反映させます。
これで、To Do アプリの設定は完了です。

DotNETSDK_16.png

Step 5

アプリ設定後、To Doのレコードを適当に追加します。

DotNETSDK_05.png

C#によるコンソールプログラムの作成

今回はマイクロソフトのVisual StudioのフリーバージョンVisual Studio Community 2022を利用して、C#でコンソールプログラムを作成します。

コンソールプロジェクトの新規作成

Step 1

Visual Studio Community 2022を開き、プロジェクトの新規作成で、「Console APP (.NET Framework)」をテンプレートとして選択します。(注:他のFrameworkを選択するとkintoneDotNETがうまく作動しませんのでご注意ください。)

Screenshot 2023-12-01 at 4.15.06 PM.png

Screenshot 2023-12-04 at 10.04.33 AM.png

kintoneDotNet SDKのインストール

Step 2

「Tools」メニューから、「NuGet Package Manager」-「Manage NuGet Packages for Solution」を選択します。

Screenshot 2023-12-01 at 4.25.12 PM.png

Step 3

「Browse」タブを選択し、検索ボックスに「kintone」と入力し検索すると「kintoneDotNET」が表示されるので選択し、「Project」をチェックし、「Install」ボタンをクリックして、kintoneDotNET SDKをインストールします。

Screenshot 2023-12-01 at 4.29.24 PM.png

データモデルのコーディング

To Do アプリのkintone上のレコードを表現するモデルを作成します。
詳細については、以下のリンクのドキュメントをご参照ください。(https://github.com/icoxfog417/kintoneDotNET/wiki/How-to-use-kintoneDotNET

Step 4

「Solution Explorer」より、Project名のアイコンを右クリックし(画面では、「ConsoleApp2」)、サブメニューから、「Add」-「Class」を選択します。

Screenshot 2023-12-01 at 4.47.50 PM.png

Step 5

ファイル名に「ToDoModel」と入力し、「Add」をクリックして、モデルクラスのファイルをプロジェクトに追加します。

Screenshot 2023-12-01 at 4.51.01 PM.png

Step 6

下記を参考にToDoModelクラスを定義するコードを作成します。

解説

モデルクラス作成の際は、AbskintoneModelを継承し、更新を行いたいプロパティにはkintoneItem属性を設定します。(プロパティ名は、kintoneのフィールドコードと一致するようにしてください。 )上記のrecord_idフィールドのように更新対象外にしたいものはisUpload属性をFalseにします。また、重複しないキーにisKey=Trueを設定することで既存レコードを更新するUpdate処理を利用できます。

*モデル作成の詳細については、以下のドキュメントを参照してください。

https://github.com/icoxfog417/kintoneDotNET/wiki/How-to-use-kintoneDotNET#1%E3%83%A2%E3%83%87%E3%83%AB%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B

残り日数更新プログラムの作成

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」を選択します。

Screenshot 2023-12-01 at 5.02.10 PM.png

「Assemblies」カテゴリーより、「Framework」を選択し、「System.Configuration」のライブラリーにチェックを入れ、「OK」ボタンをクリックします。

Screenshot 2023-12-01 at 5.04.04 PM.png

これにより、ToDoModel.cs内でSystem.Configurationが参照できるようになります。

Screenshot 2023-12-01 at 5.05.57 PM.png

Step 9

App.configファイルを開き、以下を参考にkintoneへアクセスするためのパラメーターを設定します。

詳細あるいは、その他の設定につきましては、こちらを参照してください。

動作確認

Visual Studioにて、「F5」あるいは、「Start」ボタンをクリックして、プログラムを実行して、エラーがないか動作を確認します。

Screenshot 2023-12-01 at 5.08.37 PM.png

プログラム実行後、kintoneのTo Do アプリで「残り日数」が更新されていることを確認します。

 

DotNETSDK_13.PNG

まとめ

.NET用 kintone API SDKのkintoneDotNETを使うことで、kintoneのアプリだけでは難しいデータの更新プログラムを簡単に作成することができます。このプログラムをWindowsのタスクスケジューラ等で実行するように設定することで、データの定期更新が 可能になります。
他のシナリオとしては、一定時間毎にFTP経由で送られてくる在庫や売り上げの最新データを.NETでプログラムを作成して自動更新することも出来るのではないでしょうか。

参照サイト

How to use kintoneDotNET

このサンプルは、2023年12月版 kintoneで確認したものになります。

記事に関するフィードバック

記事のコメント欄は記事に対するフィードバックをする場となっております。
右の記事フィードバックのためのガイドを参照してコメントしてください。
記事のリンク切れなど、気になる点がある場合も、こちらのフォームからフィードバックいただけますと幸いです。

Avatar
Ryusuke Takigawa

お世話になります.

記事,参考になりました.ありがとうございます.

 

使わせていただき,データを取得するところまで成功しました.

色々なフィールドを試す中で,「組織選択」の取得がうまくいきませんでした.

 

「組織選択」フィールドの場合,クラスファイル内の宣言はどのようにすればよいか教えていただけないでしょうか.

 

 

Avatar
cybozu Development team

Ryusuke Takigawa 様

お世話になっております。cybozu developer network 運営でございます。

大変申し訳ありませんが、記事シナリオに直接的に関係のないご質問は
コミュニティをご活用頂きますようお願い致します。

有志からの回答を得られる場となっております。

以上、よろしくお願い致します。

サインインしてコメントを残してください。