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ファイルの共有リンクを取得する
- Google DriveでCSVファイルを開きます
ファイルを右クリックし、「共有」→「一般公開」で「リンクを知っている全員」に設定し、「完了」をクリックします。 - 共有リンクをコピーします
共有設定後、同じメニューから「リンクをコピー」を選びます。リンクは「https://drive.google.com/file/d/ファイルID/view?usp=sharing」のような形式です。 - 直接ダウンロード用のURLに変換します
コピーしたリンクの「/view?usp=sharing」部分を「/export?format=csv」に置き換えます。これがIMPORTDATA関数で使うURLです。
手順2. スプレッドシートに関数を入力する
- データを表示したいセルを選びます
例えばセルA1を選択します。 - 次の関数を入力します
=IMPORTDATA("https://drive.google.com/uc?export=download&id=ファイルID")ただし、ファイルIDは先ほどのURLの「d/」と「/view」の間の文字列です。カンマ区切りの場合はそのまま読み込まれます。 - 自動更新を確認します
関数を入力するとすぐにデータが表示されます。以後、元のCSVが更新されると数秒から数分で自動反映されます。
Apps ScriptでFilePickerを使った自動更新手順
IMPORTDATA関数では対応できないケース(公開できないCSV、カスタム加工が必要、特定の時間だけ更新など)には、Apps Scriptを使います。ここでは、ファイル選択ダイアログ(FilePicker)でCSVを選び、そのデータを定期的に再読み込みする仕組みを作ります。
手順1. スクリプトエディタを開く
- スプレッドシートを開きます
メニューから「拡張機能」→「Apps Script」を選択します。 - プロジェクト名を変更します
デフォルトの「無題のプロジェクト」から「CSV自動更新」などに変更します。
手順2. FilePickerでファイルを選べるUIを作成する
- 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); } - 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. 自動更新のトリガーを設定する
- トリガーを追加します
スクリプトエディタの左側メニュー「トリガー(時計アイコン)」をクリックし、「トリガーを追加」を選びます。 - 関数を選択します
実行する関数に「getFileContent」を選びます。ただし、この関数はファイルIDを引数に取るため、トリガーから直接呼べません。代わりに、ファイルIDをプロパティに保存するなど工夫が必要です。簡易的には、以下のようにファイルIDを固定して呼び出す関数を別に作成します。function autoUpdate() { var fileId = 'ここにファイルIDを直接指定'; getFileContent(fileId); }そしてトリガーに「autoUpdate」を設定します。
- イベントの種類を選びます
「時間主導型」で「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
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
