デスクワークを超絶快適にするおすすめギアたち

GAS 複数のExcelファイルをまとめてスプレッドシートに変換する方法。

【当サイトはプロモーションを含んでいます】

じょじお

Google apps script(GAS)を使って複数のExcelファイルをスプレッドシートへ変換する方法について解説します。

この記事でわかること

  • GASを使ってフォルダ内の複数のExcelファイルをスプレッドシートに変換する方法がわかる。

2022年03月23日:説明不足な点(Drive API追加手順)があってスクリプトが正常に動作しない可能性があったので補足しました。

目次

(事前準備)フォルダとファイルを準備する。

2つのフォルダを用意します。

事前準備として下記のフォルダを用意します。

準備するもの

  • excelfile変換前フォルダ
    • 変換前のExcelファイルが保存してあるフォルダ
  • excelfile変換済フォルダ
    • スプレッドシート変換後のファイルをプログラムが格納するフォルダ
変換ターゲットとなるファイル

変換前フォルダに変換するExcelファイルを移動します。

変換前フォルダにスプレッドシートに変換するExcelファイルを保存します。複数対応可能です。あまりに大量のファイルを同時変換しようとすると、GoogleのAPI起動時間制限に引っかかりエラーになる可能性があるので注意してください(例の6分の壁とか)。ファイルサイズなどにもよるので少しずつ調整してみてください。

Google Apps Scriptでスクリプトを作成する。

STEP
スタンドアローンスクリプトを新規作成します。
STEP
GASコードをコピーします。
/*
エクセルファイルをフォルダ単位でまとめてスプレッドシートに変換する。
実行にはDrive APIのサービス追加が必要だよ。
*/
const sourceFolderId = 'フォルダID';
const destFolderId = 'フォルダID';

function myFunction() {
    // Excelファイルが入っているフォルダをidによって取得
    const sourceFolder = DriveApp.getFolderById(sourceFolderId);
    // Excelファイルたちを変数に保存
    const excelFiles   = sourceFolder.getFiles();
    // 変換されたファイルが格納されるフォルダをidによって取得
    const destFolder   = DriveApp.getFolderById(destFolderId);
    // Excelファイルをイテレートして順にスプレッドシートに変換
    while(excelFiles.hasNext()) {
        var file = excelFiles.next();
        convertToSpreadsheet(file, destFolder);
    }
}

function convertToSpreadsheet(file, folder) {
    // 各種オプションを設定
    // mimeTypeをスプレッドシートにする
    options = {
        title: file.getName(),
        mimeType: MimeType.GOOGLE_SHEETS,
        parents: [{id: folder.getId()}]
    };

    // Drive APIへfileをファイルをなげる。
    Drive.Files.insert(options, file.getBlob())
}
STEP
GASプロジェクトにDrive APIサービスを追加します。

▲エディタ画面の左側の「サービス」をクリックします。

▲「Drive API」サービスを選択して追加をクリックします。バージョンはデフォルトのままでよいかと思います。現時点(2022年3月)ではv2が最新のようですのでv2を使用しました。

STEP
スクリプトを実行します。

スクリプトを実行します。初回実行時だけ承認画面が表示されるかと思いますのでダイアログに従って承認してください。

スクリプト実行結果を確認してみましょう。

じょじお

実行結果を確認してみましょう。

テスト実行後にexcelfile変換済フォルダを見てみるとファイルが新しくできています。
拡張子は「.xlsm」となっていますが、ファイルアイコンはスプレッドシートのアイコンになっており、ファイルのプロパティを確認するとスプレッドシートとなっていることが確認出来ます。

じょじお

変換が成功していればファイルアイコンがスプシのアイコンになっているはずです。

ぽこがみさま

念のためファイルの中身も確認してみてね。

ファイルを変換した後スプレッドシートとして操作したい。

変換後のファイルIDを取得して操作するには、ファイルを保存したところで変数に入れるとファイル情報のオブジェクトが返ってくるので、その中のidプロパティからファイルidを取得する。

var file = Drive.Files.insert(options, file.getBlob());
let sp = SpreadsheetApp.openById(file.id).getSheets();

注意

Excelファイルをスプレッドシートに変換すると、レイアウトが崩れたり、”.xlsm”形式のExcelファイルの変換の場合はマクロが使えなくなったりします。ご注意ください。

さいごに

この記事では複数のExcelファイルをまとめてGoogleスプレッドシートに変換する方法について解説しました。当サイトではこのほかにもGASの記事を増やしていく予定です。是非RSSやTwitterの更新情報をチェックお願いします。

書籍で学ぶなら、GAS本最強のこちらがオススメ!

GAS初学者の方がテキスト1冊買うならこれ一択です。幅開く網羅されているので基本が身に付きます。

動画で学ぶならコチラがオススメ!

動画で学ぶならコチラがおすすめです。UdemyのGAS講座はいくつかありますが、他の講座と比較しても圧倒的レビュー数と高評価です。万が一の返金保証があるので安心して購入ができます。

お役に立てたらシェアお願いします!
  • URLをコピーしました!
  • URLをコピーしました!
目次