LoginSignup
0
0

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-06-21

この記事について

GASを使って複数のExcelファイルをスプレッドシートへ変換する方法についてのメモです。
変換すると、レイアウトが崩れたり、".xlsm"形式のファイルの変換の場合、マクロが使えなくなったりするので、ご利用は自己責任でお願いします。

フォルダとファイルを準備する。

下記のフォルダを用意します。excelfile変換前フォルダにテスト用にExcelをいくつか格納しておきます。

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

excelfile変換前フォルダ
image.png

コード

/*
フォルダ単位でまとめて変換する。
*/
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をPOSTする
    Drive.Files.insert(options, file.getBlob())
}

結果

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

image.png

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

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

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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0