fbpx
「給与DXのエムザス」 給与とシステム両方を本業に約20年

kintoneで外部CSVを自動読み込み!JavaScriptで外部データを一覧に表示する方法

公開日:2025.04.14
最終更新日:2025.04.14

こんにちは!
今回は、kintoneで外部サーバーにあるCSVファイルをJavaScriptで読み込み、アプリ画面に表示する方法をご紹介します。

「外部システムにあるCSVファイルを毎回手動でkintoneに取り込むのが面倒…」という方には、ぴったりの内容です。
このカスタマイズを使えば、ボタン1つでCSVデータをkintoneに表示できるようになります!

お知らせ①

🌟無料&登録不要でプラグインのお試しが可能!🌟

kintoneユーザーの皆さん!

エムザスのkintoneプラグインはもう試しましたか?🤔
エムザスでは以下のようなプラグインを開発しています!👇

EMレポ - レコードの内容をPDF / Excelに出力できるプラグイン
EMレポのプラグイン画像
EMsheet - kintoneのレコードをExcelのように表示して編集できるプラグイン
EMsheetのプラグイン画像
EMdocMaker - アプリの関連図や定義書を出力し、アプリの分析ができるプラグイン
EMdocMakerのプラグイン画像
       
EMログ - 標準の監査ログでは取得できないアプリの操作ログを取得できるプラグイン
EMログのプラグイン画像
   
 
 
 

 

デモ環境で、ほとんどの機能が今すぐお試しいただけます✨

 

さらに、お客様のドメインで無料で3ヶ月間、すべての機能を試すこともできます!🎉

\たった1分で申し込み完了!/

それでは、本題に入ります!


🔍 今回やること

  • HTTPS対応の外部サーバーからCSVファイルを取得
  • JavaScriptでCSVを読み込んでテーブル表示
  • kintoneの一覧画面(index)で表示する

🛠 事前準備

1. kintoneアプリを作成

表示専用なので、フィールドは空でもOKです。

2. JavaScriptカスタマイズを設定

  • アプリ設定 > JavaScript / CSSでカスタマイズ に進みます。
  • 今回のコード(後述)をファイルにしてアップロードします。

3. 外部CSVファイルの準備

  • HTTPSで公開されているCSVファイルが必要です。
  • CORS(クロスオリジン)対応していることが条件です。
    例: サーバーが Access-Control-Allow-Origin: * を返す必要があります。

💻 サンプルコードと解説

以下のコードを .js ファイルとして保存し、kintoneに読み込ませてください。

(function () {
  'use strict';

  // CSVファイルのURL(CORS対応されている必要あり)
  const CSV_URL = 'http://example/sample-csv/data.csv';

  // CSVを取得してパースする関数
  async function fetchAndParseCSV(url) {
    const response = await fetch(url);
    if (!response.ok) {
      throw new Error(`HTTPエラー: ${response.status}`);
    }

    const csvText = await response.text();
    return parseCSV(csvText);
  }

  // シンプルなCSVパーサー(カンマ区切り、ヘッダーあり)
  function parseCSV(data) {
    const lines = data.trim().split('\n');
    const headers = lines[0].split(',');

    return lines.slice(1).map(line => {
      const values = line.split(',');
      const row = {};
      headers.forEach((header, i) => {
        row[header.trim()] = values[i]?.trim();
      });
      return row;
    });
  }

  // 一覧画面でCSVを読み込んで表示
  kintone.events.on('app.record.index.show', async function (event) {
    if (document.getElementById('csv-view')) return;

    const container = document.createElement('div');
    container.id = 'csv-view';
    container.style.margin = '20px 0';
    container.style.padding = '10px';
    container.style.border = '1px solid #ccc';
    container.style.backgroundColor = '#f9f9f9';

    try {
      const records = await fetchAndParseCSV(CSV_URL);

      const table = document.createElement('table');
      table.border = 1;
      table.style.borderCollapse = 'collapse';
      table.style.width = '100%';

      const headerRow = document.createElement('tr');
      Object.keys(records[0]).forEach(key => {
        const th = document.createElement('th');
        th.textContent = key;
        th.style.padding = '5px';
        headerRow.appendChild(th);
      });
      table.appendChild(headerRow);

      records.forEach(record => {
        const row = document.createElement('tr');
        Object.values(record).forEach(value => {
          const td = document.createElement('td');
          td.textContent = value;
          td.style.padding = '5px';
          row.appendChild(td);
        });
        table.appendChild(row);
      });

      container.appendChild(table);
    } catch (error) {
      container.textContent = 'CSVの読み込みに失敗しました: ' + error.message;
      container.style.color = 'red';
    }

    kintone.app.getHeaderSpaceElement().appendChild(container);
  });
})();

✅ 実行結果(イメージ)

kintoneの一覧画面にアクセスすると、ヘッダーの上部にCSVの内容が表形式で表示されます。
CSVに変更があれば、ページを再読み込みするだけで自動的に反映されます!


🚨 よくある注意点

トラブル原因対応策
CORSエラー外部サーバーがCORSに対応していないサーバー側で Access-Control-Allow-Origin を設定してもらうか、GASやプロキシを使う
表示されないURL間違い、CSVの整形不備URLを直接ブラウザで開いて確認、改行コードやヘッダーをチェック
日本語が文字化けするCSVがShift_JISなどで保存されているUTF-8に変換して再アップロード

🔁 応用アイデア

  • CSVのデータをkintoneのレコードに追加登録する(自動連携)
  • Google Apps ScriptやNode.jsで中継サーバーを作り、CORSを回避
  • 定期的にkintoneと同期するバッチ処理を作成(例:1日1回の更新)

✍ まとめ

kintoneのカスタマイズ機能を使えば、JavaScriptだけで外部CSVの読み込み&表示が簡単にできます!
これで毎日のCSV取り込み作業がグッと楽になりますね 🙌

次回は、「CSVデータをkintoneにレコードとして登録する方法」も紹介しようと思っています。お楽しみに!