ADVERTISEMENT

【Googleスプレッドシート】Google Drive内のCSVを自動更新!FilePicker経由の取込

【Googleスプレッドシート】Google Drive内のCSVを自動更新!FilePicker経由の取込
🛡️ 超解決

GoogleスプレッドシートでGoogle Drive上のCSVファイルを利用している場合、データを最新に保つために毎回手動でインポートし直すのは面倒です。特に定期的に更新されるCSVであれば、自動で反映される仕組みが便利でしょう。この記事では、IMPORTDATA関数やApps Scriptを使い、FilePicker経由で選択したCSVを自動更新する方法を解説します。

初心者でも簡単に設定できる方法から、柔軟性の高いスクリプトを使った本格的な自動化まで、目的に合ったやり方が見つかります。

【要点】Drive上のCSVを自動更新する方法

  • IMPORTDATA関数: CSVファイルの共有リンクを関数に指定するだけで、数十秒ごとに自動更新されます。手軽に始めたい方に最適です。
  • Apps ScriptとDrive API: ファイル選択ダイアログ(FilePicker)で選んだCSVを、トリガーで定期的に読み込み直します。更新間隔の自由な設定や加工も可能です。
  • スプレッドシートのトリガー: 1時間ごとや毎日などのスケジュール実行で、スクリプトによる自動更新を実現します。

ADVERTISEMENT

CSV自動更新の仕組みと2つの方法

Googleスプレッドシートで外部のCSVデータを自動更新するには、主に2つのアプローチがあります。1つ目は、シート上に関数「IMPORTDATA」を入力する方法です。これはスプレッドシートの標準機能で、URLで指定したCSVの内容を一定間隔で再取得します。2つ目は、Google Apps Scriptを使ってプログラムでCSVを読み込む方法です。こちらは、ファイルの選択(FilePicker)や加工・整形が自由に行え、トリガーで完全自動化できます。それぞれの特徴を理解して、用途に合わせて選びましょう。

IMPORTDATA関数でCSVを自動更新する手順

IMPORTDATA関数は、インターネット上のCSVやTSVファイルを自動で取り込む関数です。Google Drive上のファイルであれば、共有リンクを取得してURLとして指定します。ただし、ファイルの共有設定で「リンクを知っている全員」または「公開」にする必要があります。

手順1. CSVファイルの共有リンクを取得する

  1. Google DriveでCSVファイルを開きます
    ファイルを右クリックし、「共有」→「一般公開」で「リンクを知っている全員」に設定し、「完了」をクリックします。
  2. 共有リンクをコピーします
    共有設定後、同じメニューから「リンクをコピー」を選びます。リンクは「https://drive.google.com/file/d/ファイルID/view?usp=sharing」のような形式です。
  3. 直接ダウンロード用のURLに変換します
    コピーしたリンクの「/view?usp=sharing」部分を「/export?format=csv」に置き換えます。これがIMPORTDATA関数で使うURLです。

手順2. スプレッドシートに関数を入力する

  1. データを表示したいセルを選びます
    例えばセルA1を選択します。
  2. 次の関数を入力します
    =IMPORTDATA("https://drive.google.com/uc?export=download&id=ファイルID") ただし、ファイルIDは先ほどのURLの「d/」と「/view」の間の文字列です。カンマ区切りの場合はそのまま読み込まれます。
  3. 自動更新を確認します
    関数を入力するとすぐにデータが表示されます。以後、元のCSVが更新されると数秒から数分で自動反映されます。

Apps ScriptでFilePickerを使った自動更新手順

IMPORTDATA関数では対応できないケース(公開できないCSV、カスタム加工が必要、特定の時間だけ更新など)には、Apps Scriptを使います。ここでは、ファイル選択ダイアログ(FilePicker)でCSVを選び、そのデータを定期的に再読み込みする仕組みを作ります。

手順1. スクリプトエディタを開く

  1. スプレッドシートを開きます
    メニューから「拡張機能」→「Apps Script」を選択します。
  2. プロジェクト名を変更します
    デフォルトの「無題のプロジェクト」から「CSV自動更新」などに変更します。

手順2. FilePickerでファイルを選べるUIを作成する

  1. Code.gsに以下のコードを貼り付けます
    function showPicker() {
      var html = HtmlService.createHtmlOutputFromFile('Picker')
          .setWidth(600)
          .setHeight(425);
      SpreadsheetApp.getUi()
          .showModalDialog(html, 'CSVファイルを選択');
    }
    
    function getFileContent(fileId) {
      var file = DriveApp.getFileById(fileId);
      var blob = file.getBlob();
      var content = blob.getDataAsString('UTF-8');
      var rows = Utilities.parseCsv(content);
      var sheet = SpreadsheetApp.getActiveSheet();
      sheet.getRange(1, 1, rows.length, rows[0].length).setValues(rows);
    }
    
  2. HTMLファイルを作成します
    スクリプトエディタのメニュー「ファイル」→「新規」→「HTMLファイル」を選択し、ファイル名を「Picker」にします。以下のコードを貼り付けます。
    <!DOCTYPE html>
    <html>
      <head>
        <base target="_top">
      </head>
      <body>
        <button onclick="openPicker()">ファイルを選択</button>
        <p id="result"></p>
        <script>
          function openPicker() {
            google.script.run.withSuccessHandler(function(fileId) {
              document.getElementById('result').innerText = '選択しました。ID: ' + fileId;
              google.script.run.getFileContent(fileId);
            }).withFailureHandler(function(error) {
              document.getElementById('result').innerText = 'エラー: ' + error.message;
            }).showPicker();
          }
        </script>
      </body>
    </html>
    
  3. スクリプトを保存し、承認します
    一度スクリプトエディタで実行ボタン(▶)を押すと、権限の承認画面が表示されます。必要な権限を許可してください。

手順3. 自動更新のトリガーを設定する

  1. トリガーを追加します
    スクリプトエディタの左側メニュー「トリガー(時計アイコン)」をクリックし、「トリガーを追加」を選びます。
  2. 関数を選択します
    実行する関数に「getFileContent」を選びます。ただし、この関数はファイルIDを引数に取るため、トリガーから直接呼べません。代わりに、ファイルIDをプロパティに保存するなど工夫が必要です。簡易的には、以下のようにファイルIDを固定して呼び出す関数を別に作成します。
    function autoUpdate() {
      var fileId = 'ここにファイルIDを直接指定';
      getFileContent(fileId);
    }
    

    そしてトリガーに「autoUpdate」を設定します。

  3. イベントの種類を選びます
    「時間主導型」で「1時間ごと」「毎日」など好みの間隔を設定します。保存すれば完了です。

ADVERTISEMENT

注意点とよくあるトラブル

IMPORTDATA関数が#REF!エラーを返す

主な原因はURLの形式が間違っているか、ファイルの共有設定が不十分です。直接ダウンロードリンク「https://drive.google.com/uc?export=download&id=ファイルID」を使うことを確認してください。また、CSVファイルが大きすぎるとタイムアウトする場合があります。

CSVの文字化けが発生する

IMPORTDATA関数はUTF-8のみ対応しています。Shift_JISなどのCSVの場合は、一度Google DriveでUTF-8に変換してから使うか、Apps Script側で文字コードを指定して読み込みます。

Apps Scriptの実行時間制限に引っかかる

無料アカウントでは1回のスクリプト実行が6分まで、1日の合計で90分までの制限があります。巨大なCSVファイルを毎時間読み込むと制限に達する可能性があるため、更新間隔を調整するか、差分のみを読み込む工夫が必要です。

IMPORTDATA関数とApps Scriptの比較

項目 IMPORTDATA関数 Apps Script
設定の簡易さ 関数入力のみ、非常に簡単 コードとトリガー設定が必要
ファイルの制限 公開リンクが必要、サイズ制限あり 非公開ファイルも読み込み可能
更新間隔 自動で不定期(通常数十秒~数分) トリガーで自由に設定
加工の自由度 取り込み後の加工は別途関数 読み込み時に自由に加工可能
文字コード対応 UTF-8のみ 任意の文字コードを指定可能

まとめ

Google Drive上のCSVを自動更新するには、IMPORTDATA関数が最も手軽な方法です。公開が難しいファイルや高度な制御が必要な場合は、Apps ScriptでFilePickerを組み合わせた自動取り込みが役立ちます。IMPORTDATA関数は数秒の設定で動くのに対し、スクリプトは一度作ればトリガーで完全自動化できます。用途に合わせてどちらかを選び、CSV管理の手間を減らしましょう。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。