Mila Tokyo Consulting
open main menu
Part of series: kinote beginner's guide

kintoneでAPIデータをカレンダー表示する方法 | FullCalendarを使ったアプリ開発ガイド

/ 7 min read

この記事の概要

  • kintone APIを使ってデータを取得し、FullCalendarを利用してカレンダー形式で可視化する手順を紹介します。kintoneで新しいアプリを作成し、スケジュール管理タスク管理をカレンダーで視覚化する方法を詳しく解説します。

完成イメージは、以下の通りです:


1. kintoneで新しいアプリを作成

1-1. フィールドの設定

まず、kintoneでカレンダーに表示するデータを格納する新しいアプリを作成します。アプリに次のフィールドを追加しましょう。 フィールドコードとフィールドタイプは以下の通りです:

  1. 案件名(文字列1行):プロジェクト名やタスク名を入力するフィールド
  2. 開始日時(日時):イベントや対応の開始日時を入力
  3. 終了日時(日時):イベントや対応の終了日時を入力
  4. 担当者(ユーザー選択):イベントに関わる担当者を選択

これらのフィールドは、後でFullCalendarに表示されるイベント情報として使用されます。

1-2. アプリの保存とデプロイ

フィールドを追加したら、アプリを保存して公開します。これで、カレンダーに表示するためのデータを保存する準備が整いました。


2. APIトークンの取得

次に、JavaScriptでkintone APIを使用してデータを取得するために、APIトークンを取得します。

  1. アプリの「設定」を開き、「APIトークン」メニューに進みます。
  2. 「新しいトークンを作成」ボタンをクリックし、読み取り権限を付与した状態でAPIトークンを生成します。
  3. 生成されたAPIトークンをメモしておきましょう(このトークンは後でJavaScript内で使用します)。

3. カレンダーを表示するためのJavaScriptカスタマイズ

3-1. FullCalendarの導入

kintoneのカレンダー表示には、FullCalendarという外部ライブラリを使用します。FullCalendarを読み込むために、次のように外部スクリプトを追加します。

  1. アプリの「設定」画面で「JavaScript/CSSでカスタマイズ」メニューを選択します。
  2. 以下のスクリプトとスタイルを「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. カレンダーの動作確認

  1. アプリのレコード一覧画面を開きます。
  2. 上部にカレンダーが表示され、登録された案件やイベントがカレンダー内に反映されているはずです。
  3. FullCalendarを利用することで、担当者や案件のスケジュールを視覚的に確認することが可能になります。


まとめ

この記事では、kintone上にカレンダーを表示するための新しいアプリを作成し、FullCalendarを使ってスケジュールやタスクを管理する手順を紹介しました。APIを利用してkintoneからデータを取得し、カレンダーに反映することで、スケジュール管理がより効率的になります。FullCalendarのカスタマイズ機能を活用して、担当者ごとの色分けやイベントのフィルタリングなど、さらに機能を拡張してみましょう。


これでkintoneアプリにカレンダーを表示できるようになります。カスタマイズによって使い勝手を向上させ、より効果的にプロジェクトやタスクを管理しましょう。