【GAS】GoogleDrive上のExcelをGoogleスプレッドシートに一括変換

概要

まだまだExcelさんは現役ですね. でもMac使いだとOfficeがインストールされていなかったり, 共有したいときに不便だったりします. そんなときはGoogleスプレッドシートに変換してしまいましょう. GoogleDrive上でExcelファイルを開くと, 「Googleスプレッドシートで開く」というボタンが表示されます. それをクリックすればGoogleスプレッドシートに変換されたファイルが新たに生成されます.

ただし変換したいファイルが多数ある場合はプログラムで一括変換したいものですね. この記事ではGASからDrive APIを利用することにより, ExcelファイルをGoogleスプレッドシートに一括変換する方法をご紹介します.

ただし注意していただきたいのは, ExcelGoogleスプレッドシートは完全な互換性があるわけではありません. Excelにしかない関数やマクロを使っている場合はうまく変換できないことがあります.

参考ページ

いろいろ検索しまくって, 一番参考になったのはやっぱり公式リファレンスでした. このページには, GASからDrive APIを使う方法が書かれています. 本記事では少し手を加えて, Excelスプレッドシートに変換できるようにしていきます.

日本語のページではこちらも大いに助けになりました.

本記事ではGASの基礎を前提として進めていきます. 分からないところがあれば, 前回の記事を参考にしてください.

やってみよう

用意するもの

  • 複数のExcelファイルが入ったGoogleDrive上のフォルダ
  • スプレッドシートに変換されたファイルが格納されるフォルダ(最初はからっぽ)

同じフォルダに格納されても全く問題はありませんが, 今回は分けることとします.

早速コード

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を有効にするには, 以下の手順を踏む必要があります.

  • 「リソース」メニューから, 「Googleの拡張サービス」をクリック.
  • 一覧の中から「Drive API」を探し, 有効にする.

f:id:riemann1618:20181020171423p:plain:w500

f:id:riemann1618:20181020171249p:plain:w500

  • 右端にある「認証情報を作成」をクリック

f:id:riemann1618:20181020171313p:plain:w500

  • 認証情報を以下のように作成

f:id:riemann1618:20181020171448p:plain:w500

認証情報が作成できれば, このページは閉じてもらって構いません. APIの一覧が並んだダイアログの「OK」を押せば, APIの有効化は終了です.

実行

以上で準備は整いました. 初回実行時は認証が必要ですから, 指示にしたがって認証をしましょう. もしうまくいかないようであれば, 前回の記事を参考にしてください.

全てのExcelファイルがGoogleスプレッドシートに変換されていれば成功です.