驚くほど簡単!GASを使ってExcelファイルを読み込む方法


GASでExcelファイルを読み込む方法
まずはGASでエクセルファイルを読み込むための準備から。
次の4ステップを踏んでみよう。
Googleドライブにファイルをアップロード
GoogleドライブにExcelファイルをアップロードしよう。
エクセルのファイルIDを取得
次に、そのエクセルファイルをGASで扱うためにはファイルのIDが必要になる。
以下の関数を実行してファイルIDを取得する方法もありだ。
// ドライブ内のファイルを取得する
function checkFileId() {
var file = DriveApp.getFilesByName('sample_excel.xlsx').next();
var fileId = file.getId();
Logger.log('File ID: ' + fileId);
}
✅ ここでは、特定の名前(ここでは’sample.xlsx’)でファイルを検索し、そのID を取得してログに出力している。
「IDを取得するためにGASを使いたくない!」
という気持ちなら、さっきアップロードしたエクセルファイルをドライブ上で開いてみよう。
https://docs.google.com/spreadsheets/d/xxxxxxxxxxxxxxxxxxxx/
というURLだったら、/d/より後の
xxxxxxxxxxxxxxxxxxxx
がIDだ。
Drive APIを有効にする
エディターの左から、左のサービスからDrive APIを有効化しよう。
Driveという名前がついているやつが複数があるが、
Drive API
というシンプルなものを今回は選ぼう。
Excelファイルをスプレッドシートへ変換する
いよいよ、Excelファイルをスプレッドシートに変換するぞ。この操作でエクセル内のデータをGASで使えるようになる。
function importExcelFile() {
const fileId = 'EXCEL_FILE_ID'; // Drive上のExcelファイルのIDを入力
const file = DriveApp.getFileById(fileId);
// Excelファイルをスプレッドシートとしてインポート
const resource = {
title: file.getName(),
mimeType: MimeType.GOOGLE_SHEETS
};
const imported = Drive.Files.copy(resource, fileId);
const spreadsheet = SpreadsheetApp.openById(imported.id);
Logger.log('インポート成功: ' + spreadsheet.getUrl());
}
- DriveApp.getFileById(fileId): Google Driveから該当ファイルを取得。
- resource: スプレッドシートとしてインポートするための設定オブジェクト。
title
: 新しく作成するファイル名mimeType
:MimeType.GOOGLE_SHEETS
を指定することで「スプレッドシート」に変換。
- Drive.Files.copy(): 指定したファイル(Excel)を Google スプレッドシートとして複製。
- SpreadsheetApp.openById(): 変換された新しいスプレッドシートの内容にアクセス。
- Logger.log(): インポートしたスプレッドシートのURLをログに出力。

GASでExcelデータを加工して利用する
エクセルを読み込んだだけじゃ満足できない・・・だと?
次のスクリプトなら、エクセルをスプレッドシート化して即データを取得し、ログに出力できるぞ。
function importExcelFileAndReadValue() {
const file = DriveApp.getFilesByName('sample_excel.xlsx').next();
const fileId = file.getId(); // ExcelファイルのID
const resource = {
title: file.getName(),
mimeType: MimeType.GOOGLE_SHEETS
};
const imported = Drive.Files.copy(resource, fileId);
const spreadsheet = SpreadsheetApp.openById(imported.id);
const sheet = spreadsheet.getSheets()[0]; // 最初のシートを取得
Logger.log('インポート成功: ' + spreadsheet.getUrl());
// 取得してログに出力
var values = sheet.getDataRange().getValues();
for (var i = 0; i < values.length; i++) {
Logger.log(values[i]);
}
}
getDataRange().getValues()はシート内のすべてのデータを二次元配列として取得する処理を加えているバージョンだ。
forループでデータを処理しよう。

練習問題:GASでExcelファイルを読み込んで特定のデータを抽出しよう
あるExcelファイルがあり、その中のA列に売上データ、B列に日付が入っています。
このデータを読み込み、「9月」の売上データだけを抽出して表示するScriptを書きなさい。
解答・解説
function extractSeptemberSalesFromExcel() {
const fileId = 'YOUR_EXCEL_FILE_ID_HERE'; // ← ここにExcelファイルのIDを入れる
const file = DriveApp.getFileById(fileId);
// Excelをスプレッドシートに変換
const resource = {
title: file.getName().replace('.xlsx', ''),
mimeType: MimeType.GOOGLE_SHEETS
};
const imported = Drive.Files.copy(resource, fileId); // Drive APIが必要
const sheet = SpreadsheetApp.openById(imported.id).getSheets()[0];
// データ取得
const values = sheet.getDataRange().getValues();
// 売上を抽出(ヘッダーをスキップするなら i = 1 から)
for (let i = 1; i < values.length; i++) {
const sales = values[i][0]; // A列:売上
const date = values[i][1]; // B列:日付
if (date instanceof Date) {
if (date.getMonth() === 8) { // 9月(0=1月, ..., 8=9月)
Logger.log(`日付: ${date.toDateString()}, 売上: ${sales}`);
}
}
}
}
このスクリプトでは、まずDriveAppから指定のExcelファイルを取得し、それをスプレッドシートに変換しています。
それから、データを一行ずつ確認し、B列のデータが9月のものだけを抽出しています。
date.getMonth() は0から始まるので9月は8で判定します。結果をLoggerで出力しています。