【GAS】GoogleDrive上のExcelをGoogleスプレッドシートに一括変換
概要
まだまだExcelさんは現役ですね. でもMac使いだとOfficeがインストールされていなかったり, 共有したいときに不便だったりします. そんなときはGoogleスプレッドシートに変換してしまいましょう. GoogleDrive上でExcelファイルを開くと, 「Googleスプレッドシートで開く」というボタンが表示されます. それをクリックすればGoogleスプレッドシートに変換されたファイルが新たに生成されます.
ただし変換したいファイルが多数ある場合はプログラムで一括変換したいものですね. この記事ではGASからDrive APIを利用することにより, ExcelファイルをGoogleスプレッドシートに一括変換する方法をご紹介します.
ただし注意していただきたいのは, ExcelとGoogleスプレッドシートは完全な互換性があるわけではありません. Excelにしかない関数やマクロを使っている場合はうまく変換できないことがあります.
参考ページ
いろいろ検索しまくって, 一番参考になったのはやっぱり公式リファレンスでした. このページには, GASからDrive APIを使う方法が書かれています. 本記事では少し手を加えて, Excelをスプレッドシートに変換できるようにしていきます.
日本語のページではこちらも大いに助けになりました.
本記事ではGASの基礎を前提として進めていきます. 分からないところがあれば, 前回の記事を参考にしてください.
やってみよう
用意するもの
同じフォルダに格納されても全く問題はありませんが, 今回は分けることとします.
早速コード
function myFunction() { // Excelファイルが入っているフォルダをidによって取得 var source_folder = DriveApp.getFolderById('*****'); // Excelファイルたちを変数に保存 var excel_files = source_folder.getFiles(); // 変換されたファイルが格納されるフォルダをidによって取得 var dest_folder = DriveApp.getFolderById('*****'); // Excelファイルをイテレートして順にスプレッドシートに変換 while(excel_files.hasNext()) { var file = excel_files.next(); convertToSpreadsheet(file, dest_folder); } } function convertToSpreadsheet(file, folder) { // 各種オプションを設定 // mimeTypeの指定により, スプレッドシートに変換される options = { title: file.getName(), mimeType: MimeType.GOOGLE_SHEETS, parents: [{id: folder.getId()}] }; // Drive APIへfileをPOSTする Drive.Files.insert(options, file.getBlob()) }
Drive APIを利用しているのはDrive.Files.insert
の部分です.
Drive APIを有効にする
コードを書いただけではAPIを利用することはできません. APIを有効にするには, 以下の手順を踏む必要があります.
- 右端にある「認証情報を作成」をクリック
- 認証情報を以下のように作成
認証情報が作成できれば, このページは閉じてもらって構いません. APIの一覧が並んだダイアログの「OK」を押せば, APIの有効化は終了です.
実行
以上で準備は整いました. 初回実行時は認証が必要ですから, 指示にしたがって認証をしましょう. もしうまくいかないようであれば, 前回の記事を参考にしてください.