kintoneでAPIデータをカレンダー表示する方法 | FullCalendarを使ったアプリ開発ガイド
この記事の概要
- kintone APIを使ってデータを取得し、FullCalendarを利用してカレンダー形式で可視化する手順を紹介します。kintoneで新しいアプリを作成し、スケジュール管理やタスク管理をカレンダーで視覚化する方法を詳しく解説します。
完成イメージは、以下の通りです:
1. kintoneで新しいアプリを作成
1-1. フィールドの設定
まず、kintoneでカレンダーに表示するデータを格納する新しいアプリを作成します。アプリに次のフィールドを追加しましょう。 フィールドコードとフィールドタイプは以下の通りです:
- 案件名(文字列1行):プロジェクト名やタスク名を入力するフィールド
- 開始日時(日時):イベントや対応の開始日時を入力
- 終了日時(日時):イベントや対応の終了日時を入力
- 担当者(ユーザー選択):イベントに関わる担当者を選択
これらのフィールドは、後でFullCalendarに表示されるイベント情報として使用されます。
1-2. アプリの保存とデプロイ
フィールドを追加したら、アプリを保存して公開します。これで、カレンダーに表示するためのデータを保存する準備が整いました。
2. APIトークンの取得
次に、JavaScriptでkintone APIを使用してデータを取得するために、APIトークンを取得します。
- アプリの「設定」を開き、「APIトークン」メニューに進みます。
- 「新しいトークンを作成」ボタンをクリックし、読み取り権限を付与した状態でAPIトークンを生成します。
- 生成されたAPIトークンをメモしておきましょう(このトークンは後でJavaScript内で使用します)。
3. カレンダーを表示するためのJavaScriptカスタマイズ
3-1. FullCalendarの導入
kintoneのカレンダー表示には、FullCalendarという外部ライブラリを使用します。FullCalendarを読み込むために、次のように外部スクリプトを追加します。
- アプリの「設定」画面で「JavaScript/CSSでカスタマイズ」メニューを選択します。
- 以下のスクリプトとスタイルを「URL指定」で追加してください。PC用と、スマートフォン用にそれぞれ追加します。
javascript
https://cdn.jsdelivr.net/npm/fullcalendar@6.1.15/index.global.min.js
css
https://cdn.jsdelivr.net/npm/fullcalendar@6.1.15/index.global.min.css
3-2. カレンダーを表示するJavaScriptの実装
次に、kintoneアプリのレコード一覧画面にカレンダーを表示するためのJavaScriptコードを記述します。以下のコードを新しいJavaScriptファイルに書き込み、「アップロードして追加」します。
{your-api-token}
の部分を、取得したAPIトークンに、{your-subdomain}
の部分をご自身のkintoneのサブドメインに、置き換えてください。
(function() {
'use strict';
// レコード一覧表示時にカレンダーを表示するイベント
kintone.events.on('app.record.index.show', function(event) {
// カレンダーが既に存在する場合は再生成しない
if (document.getElementById('calendar')) {
return;
}
// カレンダーを表示するためのdiv要素を作成
const calendarDiv = document.createElement('div');
calendarDiv.id = 'calendar';
calendarDiv.style = 'width: 100%; max-width: 800px; margin: auto; padding: 20px 0;'; // カレンダーのスタイルを設定
// 一覧の下にカレンダーを表示
const listSpace = kintone.app.getHeaderSpaceElement();
if (listSpace) {
listSpace.appendChild(calendarDiv); // ヘッダーエリアの下にカレンダーを追加
}
// FullCalendarを初期化して表示
const calendar = new FullCalendar.Calendar(calendarDiv, {
initialView: 'dayGridMonth', // 月間表示
headerToolbar: {
left: 'prev,next today',
center: 'title',
right: 'dayGridMonth,timeGridWeek,timeGridDay'
},
events: [] // APIから取得したデータを後で追加
});
// カレンダーをレンダリング
calendar.render();
// kintone APIからデータを取得してカレンダーに表示
const appId = kintone.app.getId(); // アプリIDを取得
const apiUrl = `https://{your-subdomain}.cybozu.com/k/v1/records.json?app=${appId}`;
const apiToken = '{your-api-token}'; // 取得したAPIトークンをここに記入
// kintone APIからレコードを取得
fetch(apiUrl, {
method: 'GET',
headers: {
'X-Cybozu-API-Token': apiToken
}
})
.then(response => response.json())
.then(data => {
// 取得したデータをFullCalendarのイベント形式に変換
const events = data.records.map(record => {
return {
title: record.案件名.value, // イベント名として案件名を使用
start: record.開始日時.value, // 開始日時
end: record.終了日時.value, // 終了日時
allDay: true // 終日イベントとして扱う
};
});
// カレンダーにイベントを追加
events.forEach(event => {
calendar.addEvent(event);
});
})
.catch(error => {
console.error('Error fetching records:', error);
});
return event;
});
})();
3-3. JavaScriptカスタマイズの適用
このJavaScriptファイルをkintoneアプリに適用するために、再び「JavaScript/CSSでカスタマイズ」メニューに進み、JavaScriptファイルをアップロードします。
- PC版に適用
- モバイル版には適用しない(モバイル版にはカレンダーが表示されない設定)
設定を保存し、アプリを再公開します。
4. カレンダーの動作確認
- アプリのレコード一覧画面を開きます。
- 上部にカレンダーが表示され、登録された案件やイベントがカレンダー内に反映されているはずです。
- FullCalendarを利用することで、担当者や案件のスケジュールを視覚的に確認することが可能になります。
まとめ
この記事では、kintone上にカレンダーを表示するための新しいアプリを作成し、FullCalendarを使ってスケジュールやタスクを管理する手順を紹介しました。APIを利用してkintoneからデータを取得し、カレンダーに反映することで、スケジュール管理がより効率的になります。FullCalendarのカスタマイズ機能を活用して、担当者ごとの色分けやイベントのフィルタリングなど、さらに機能を拡張してみましょう。
これでkintoneアプリにカレンダーを表示できるようになります。カスタマイズによって使い勝手を向上させ、より効果的にプロジェクトやタスクを管理しましょう。