概要
この記事ではGoogle Apps Script(GAS)を使ってエクセルファイルをスプレッドシートに変換する方法について紹介させていただきます。ここではエクセルファイルの場所は①Google Drive上、あるいは②どこかのサイト上(直リンク可能)にあると想定します。
エクセルファイルをスプレッドシートに変換
準備
下記のサンプルスクリプトはスクリプトエディタへ貼り付けて使用してください。スクリプトを実行する前に次の手順でAPIを使用するための下記2点の設定を行ってください。どちらから行っても問題ありません。
-
スクリプトエディタ -> リソース -> Googleの拡張サービス -> DriveAPI v2を有効にする
-
スクリプトエディタ -> リソース -> Cloud Platform プロジェクト -> APIコンソールを表示 -> 左側のライブラリを選択 -> Drive APIを検索 -> DriveAPIを有効にする
1. エクセルファイルがGoogle Drive上にある場合
このサンプルは、Google Drive上にあるエクセルファイルをスプレッドシートに変換する状況を想定しています。fileID
, folderID
, filename
を入力して実行してください。
var fileID = "#####";
var folderID = "#####";
var filename = "filename";
var res = Drive.Files.insert({
"mimeType": "application/vnd.google-apps.spreadsheet",
"parents": [{id: folderID}],
"title": filename
}, DriveApp.getFileById(fileID).getBlob());
もしも、ファイルIDが分からない場合は、下記のようなスクリプトでファイル名に対するファイルIDを取得することができます。もしも同一ファイル名が複数ある場合は複数のIDが返されます。
var filename = "filename";
var res = Drive.Files.list({
q: "title=filename and trashed=false",
fields: "items(id)"
});
2. エクセルファイルがどこかのサイト上にある場合
このサンプルは、どこかのサイト上にエクセルファイルが存在し、そこからダウンロードしてスプレッドシートに変換する状況を想定しています。fileURL
, folderID
, filename
を入力して実行してください。このサンプルの動作確認を行った際は、DropBoxへサンプルをアップロードし、直リンクのURLを作成して行いました。
var fileURL = "https://#####/sample.xlsx";
var folderID = "#####";
var filename = "filename";
var res = Drive.Files.insert({
"mimeType": "application/vnd.google-apps.spreadsheet",
"parents": [{id: folderID}],
"title": filename
}, UrlFetchApp.fetch(fileURL).getBlob());
DriveApp.getFileById(fileID)
をUrlFetchApp.fetch(fileURL)
に変更するだけでOKです。
mimeType
を変更することで、ワードやパワーポイントのファイルへの対応も可能です。mimeTypeの種類はこちらをご覧ください。