とあるエンジニアの作業ブログ

GCP JavaScript 作業効率化

Google Apps ScriptでG DriveのExcelをスプレッドシートに変換

投稿日:

GASでG Driveに保存されているExcelをGoogle スプレッドシートに一括変換する仕組みを作った。

実現したいこと

G Driveに保存されている大量のExcelファイルを一括でGoogleスプレッドシートに変換する。
要件は以下。

  1. 何ヶ所かのディレクトリに分かれているのでディレクトリはパラメタ化する
  2. 出力先のディレクトリは任意の場所を指定できるようにする
  3. ディレクトリ配下のExcelを全部まとめてワンオペで変換する
  4. 入力はExcelファイル(.xlsx)のみとし、他のファイルがあっても変換しない
  5. すでに同名のスプレッドシートが出力先にある場合は処理をskipする

ソースコードと解説

だいたいコメントの通りだがいくつかポイントだけ。

本当は、

var excel_files = folder.getFiles();

の時点でExcelファイルだけに絞りたかった。

var name = /.*\.xlsx/;

の正規表現をgetFilesByName()の引数に与えて取得しようと思ったが、どうやらgetFilesByName()は正規表現の引数をサポートしてない?っぽいので諦めた。
「できない」ってのを調べるのに時間がかかってここでハマった。うまくやればできるのか??

name.test(excel_filename)

testメソッドは正規表現オブジェクト(正式には何て言うんだ?)のメソッドで、引数の配列(多分。ちゃんとリファレンスみてない)の中に1件でも正規表現にマッチするものがあればTRUEが返る。

Drive.Files.insert(options, file.getBlob())

ここでDrive APIを使っているので、GASエディターの[リソース]メニューからAPIを有効化しておく必要がある。

何を隠そう、「何ヶ所かのディレクトリに分かれているのでディレクトリはパラメタ化する」「出力先のディレクトリは任意の場所を指定できるようにする」とか言っておきながらソースコード直書きという乱暴さだが、もうめんどくなったのでこのまま使います。

気が向いたらチョロ作業なのでスプレッドシートから値取得するように作り替えます。気が向いたら。

-GCP, JavaScript, 作業効率化
-, , ,

執筆者:


comment

メールアドレスが公開されることはありません。

関連記事

AppSheet逆引きリファレンス ~VLOOKUP~

前回サボってしまって書ききれなかった記事の続き。 まだまだ事例の少ないAppSheet。 逆引きリファレンス的ノウハウとして前回はExcelで言うところの「データの入力規則」、すなわちリストデータを保 …

AppSheet逆引きリファレンス ~マスタデータ参照~

まだまだ事例の少ないAppSheet。 逆引きリファレンス的にノウハウをメモっていきます。 まずはどんなアプリでも絶対にやるであろうマスタデータ参照。 Excelで言うところの「vlookup」と「デ …

AppSheet逆引きリファレンス ~URL指定で画像を表示させる~

まだまだ事例の少ないAppSheet。 逆引きリファレンス的にノウハウをメモ。 Web上に画像のURLを指定してサムネイル画像などを表示する方法。 AppSheetの Image Type を使えば …

AppSheet逆引きリファレンス ~カードデザインっぽいホーム画面をつくる~

まだまだ事例の少ないAppSheet。 逆引きリファレンス的にノウハウをメモ。 AppSheetをいじり出すと、社内の業務効率化ツールだとわかっていても無駄にアプリっぽくしたくなるというもの。 という …

MacでAsciiDoc環境構築メモ

MacでAsciiDoc環境を構築した時のメモ。簡単にできると思いきや、思いの外時間がかかったので自分用に。 目次 動作環境 やりたいこと AsciiDocもろもろのインストール トラブルシューティン …