【プラグイン不要】kintoneのデータを週次でCSV出力する方法

本記事ではJavaScriptを使ってデータを週次でCSV出力する方法についてご紹介します。

アプリの作成からステップバイステップで丁寧に解説していますので、一緒に手を動かしながら実装していきましょう!

この記事でわかること
  • kintone一覧画面にボタンを追加する
  • 1週間分のレコードを絞り込む
  • データをCSV形式に変換する
  • Excelで文字化けしないようSJISに変換
  • ボタンクリックで週次CSVを出力
目次

アプリを作ろう

まずはテスト用のアプリを作成し必要なフィールドを設置しましょう!

アプリを作成

kintoneの「アプリ」から新規アプリを作成する手順画面
「はじめから作成」を選択する画像

アプリ名は「週次CSV出力テスト」など分かりやすい名前にしておきましょう!

フィールドを追加&設定

赤枠の「日付」と「文字列(1行)」をドラッグ&ドロップで画像のよう設置しましょう!

kintoneアプリで日付フィールドと文字列フィールドを追加する設定画面

設置した「日付」にカーソルを合わせ、歯車アイコンから設定をクリック、フィールドコードをdateに変更し保存をしましょう!

kintoneで日付フィールドコードをdateに変更する方法

同じように設置した「文字列(1行)」にカーソルを合わせ、歯車アイコンから設定をクリック、フィールドコードをtodoに変更し保存をしましょう!

kintoneで文字列フィールドコードをtodoに変更する設定画面

アプリを公開

フィールドの変更をしたら「保存」して「アプリを公開」をします。

これで準備は完了です!次はアプリにデータを登録していきましょう!!

必要なデータを登録しよう

ここでは出力に必要なデータを登録していきます!

1.一覧画面から 「+」アイコン をクリック

2.日付には 今日の日付 を入力

3.todo には 「テスト1」 と入力

4.入力ができたら保存をクリック

※参考までに、私が登録したときは9月23日でしたが、皆さんは実際に登録する日の 日付を入力 してください!

登録ができたら、同じ手順で 1週間分(7日分)のデータ を追加します。

・日付は「昨日」から順番に入力してください。

・todo の名前は「テスト2」「テスト3」…と番号を増やしていきましょう!

kintoneに1週間分のテストデータを登録した一覧画面の例

画像のように7つのデータが登録されていればOKです!

これで準備は完了です!次のJavaScriptの実装も一緒に頑張りましょう!!

JavaScriptを読み込もう

ここからはJavaScriptファイルを作成し実際にkintoneに読み込んでみましょう!

サンプルコードのコピー

以下のコードをコピーして、テキストファイルに貼り付けましょう。

(function () {
    'use strict';

    kintone.events.on('app.record.index.show', function (event) {
        if (document.getElementById('export-weekly-btn')) return;

        const exportButton = document.createElement('button');
        exportButton.id = 'export-weekly-btn';
        exportButton.innerText = '週次データCSV出力';

        exportButton.onclick = ExportData;

        const headerMenuSpace = kintone.app.getHeaderMenuSpaceElement();
        headerMenuSpace.appendChild(exportButton);

        return event;
    });
})();

function ExportData() {
    const appId = kintone.app.getId();

    const today = new Date();
    const weekAgo = new Date();
    weekAgo.setDate(today.getDate() - 6);

    function formatDate(date) {
        return date.toISOString().split('T')[0];
    }

    const fromDate = formatDate(weekAgo);
    const toDate = formatDate(today);

    // クエリは date フィールドを利用
    const query = `date >= "${fromDate}" and date <= "${toDate}" order by date desc`;

    const params = {
        app: appId,
        query: query,
        fields: ['date', 'todo']
    };

    kintone.api(kintone.api.url('/k/v1/records', true), 'GET', params)
        .then(function (resp) {
            const headers = ['日付', 'ToDo'];

            const csvRows = resp.records.map(record => {
                return [
                    record.date.value,
                    record.todo.value
                ].join(',');
            });

            const csvContent = [headers.join(','), ...csvRows].join('\n');

            // SJISに変換(Excelで文字化けしないように)
            const sjisArray = Encoding.convert(csvContent, {
                to: 'SJIS',
                from: 'UNICODE',
                type: 'array'
            });

            const blob = new Blob([new Uint8Array(sjisArray)], { type: 'text/csv' });

            // ファイル名例: todo_2025-09-16~2025-09-22.csv
            saveAs(blob, `todo_${fromDate}~${toDate}.csv`);
        })
        .catch(function (error) {
            console.error('レコード取得エラー', error);
        });
}

JavaScriptファイルとして保存

テキストファイルにコードを貼り付けたら

1.「ファイル」→「名前を付けて保存」

2.「ファイルの種類」を すべてのファイル に設定

3.「ファイル名」は weeklyExport.js

保存先はデスクトップなど、分かりやすい場所でにしておきましょう!

これでJavaScriptファイルが完成しました。次は この JavaScript ファイルを kintone に読み込んでいきましょう!

作成したファイルをアップロード

作成した weeklyExport.js をkintoneに読み込みます。

STEP
設定画面を開く

1.対象アプリの歯車アイコンの矢印をクリック

2.カスタマイズ/サービス連携をクリック

3.JavaScript/CSSでカスタマイズをクリック

kintoneのカスタマイズ設定画面「JavaScriptでカスタマイズ」を選択
STEP
対象ファイルをアップロード

まずは作成したファイルを動かすために、 FileSaver.js と Encoding.js を読み込みます。

1.「URL指定で追加」をクリック

2.以下のURLを入力して保存します

https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/2.0.5/FileSaver.min.js
FileSaver.jsのURLを指定してkintoneに追加する設定画面

同じように「URL指定で追加」をクリックし以下のURLを入力して保存しましょう

https://cdnjs.cloudflare.com/ajax/libs/encoding-japanese/2.0.0/encoding.min.js
Encoding.jsのURLを指定してkintoneに追加する設定画面

次に作成したファイルをアップロードします。

1.「アップロードして追加」をクリック

2.先ほど保存したweeklyExport.jsをダブルクリック

weeklyExport.jsファイルをkintoneにアップロードする手順画面

3つのJavaScriptファイルが追加されているかを確認しましょう!

kintoneに3つのJavaScriptファイルを追加した確認画面
STEP
設定を保存

画面右下の「保存ボタン」をクリックしましょう!

kintoneのカスタマイズ設定を保存する画面の例

右上の「アプリの更新」をクリック、「アプリの変更を運用環境に適用します。よろしいですか?」という画面が出るのでもう一度「アプリの更新」をクリックしましょう!

kintoneアプリの更新を運用環境に適用する確認画面

これで、週次CSV出力アプリの作成が完了です!完成すると、一覧画面に「週次データCSV出力」ボタンが表示されます。

ボタンをクリックして、CSV出力が正しく動作するか確認してみましょう!

うまく動作しないときの確認ポイント

記事の通りにやったのに動作しない…と不安になった方も大丈夫!

ここではよくあるつまずきポイントを一緒に確認していきましょう。

1.フィールドコードの設定ミス
  • 日付はdate文字列は todo

→ スペルミスや別の単語だとうまく動作しません。必ず確認しましょう。

2.コードに不要な文字
  • 余計な文字が入っていないか

→ テキストファイルに不要な文字や改行が混ざっていると、アプリが正しく動作しません。

3.正しくファイルをアップロードできていない
  • JavaScripを順番にアップロード

→ 順番が違うとエラーが出る場合があります。もう一度確認してください。

動作に問題がある場合は、まず上記の3点をチェックしてみてくださいね。

皆さんのアプリがスムーズに動きますように!

コードのポイントを押さえよう

「コピペしたはいいけどどういう仕組みなんだ…?」

そう感じた方のために、ここではコードをポイントごとに解説していきます!

即時実行関数・ボタン追加

(function () {
    'use strict';

    kintone.events.on('app.record.index.show', function (event) {
        if (document.getElementById('export-weekly-btn')) return;

        const exportButton = document.createElement('button');
        exportButton.id = 'export-weekly-btn';
        exportButton.innerText = '週次データCSV出力';

        const headerMenuSpace = kintone.app.getHeaderMenuSpaceElement();
        headerMenuSpace.appendChild(exportButton);

        exportButton.onclick = ExportData;

        return event;
    });
})();
  • コード全体を即時実行関数で囲み、他のスクリプトと干渉しないようにしています。
  • 一覧画面が表示されたタイミングでボタンを作成し、既存のボタンがあれば重複を防ぎます。
  • ボタンはヘッダーに追加され、クリックすると ExportData 関数が呼ばれます。

ExportData 関数の開始・日付計算

function ExportData() {
    const appId = kintone.app.getId();

    const today = new Date();
    const weekAgo = new Date();
    weekAgo.setDate(today.getDate() - 6);

    function formatDate(date) {
        return date.toISOString().split('T')[0];
    }

    const fromDate = formatDate(weekAgo);
    const toDate = formatDate(today);
  • 現在のアプリIDを取得し、日付を操作するための変数を定義しています。
  • todayweekAgo で1週間分の日付範囲を計算します。
  • formatDate で日付を YYYY-MM-DD 形式に変換し、クエリで使用できる形に整えます。

kintone クエリ作成

const query = `date >= "${fromDate}" and date <= "${toDate}" order by date desc`;

const params = {
    app: appId,
    query: query,
    fields: ['date', 'todo']
};
  • クエリ文字列で1週間分のレコードを絞り込みます。
  • order by date desc で日付の新しい順に並べます。
  • fields で必要なフィールドのみ取得するよう指定しています。

レコード取得・CSV作成・保存

kintone.api(kintone.api.url('/k/v1/records', true), 'GET', params)
    .then(function (resp) {
        const headers = ['日付', 'ToDo'];

        const csvRows = resp.records.map(record => {
            return [
                record.date.value,
                record.todo.value
            ].join(',');
        });

        const csvContent = [headers.join(','), ...csvRows].join('\n');
  • kintone API を使って非同期でレコードを取得します。
  • ヘッダ行を定義し、取得したレコードをカンマ区切りで CSV の行に変換します。
  • 配列を結合して、1つの CSV 文字列にまとめています。

CSV 変換・保存

        const sjisArray = Encoding.convert(csvContent, {
            to: 'SJIS',
            from: 'UNICODE',
            type: 'array'
        });

        const blob = new Blob([new Uint8Array(sjisArray)], { type: 'text/csv' });
        saveAs(blob, `todo_${fromDate}~${toDate}.csv`);
    })
    .catch(function (error) {
        console.error('レコード取得エラー', error);
    });
}
  • Excelで文字化けしないように CSV を SJIS に変換します。
  • Blob でファイル化し、saveAs で PC に CSV として保存します。
  • エラー発生時はコンソールに出力されます。

まとめ

今回の記事では、kintoneのデータを週次でCSV出力する方法を紹介しました。

少し長く感じたかもしれませんが、その分、得られた知識も多かったはずです!

できるようになったこと
  • 一覧画面にボタンを追加できる
  • 1週間分のレコードを取得・絞り込める
  • データをCSV形式に変換できる
  • Excelで文字化けせず保存できる
  • ボタンクリックで週次CSVを出力できる

コメント

コメントする

コメントは日本語で入力してください。(スパム対策)

CAPTCHA

目次