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

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

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

関連記事

MacでAsciiDoc環境構築メモ

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

GulpでWordPressのCI 〜設計編〜

WordPressのテーマファイルをローカルで開発してgithubにpush、そのままサーバーまでデプロイするCIを実現しようと考えています。自分の環境とか踏まえてまずはどうやって実現するか設計しまし …

GulpでWordPressのCI 〜実装編〜

gulpを使ったWordPressのテーマファイルCIの実装編です。 設計編はこちらを参照ください。 目次 やりたいこと・動作環境・前提 やりたいこと・環境・バージョン ディレクトリ構成 利用モジュー …

【備忘】MacのExcelの自分的よく使うけど忘れがちなショートカット

MacのExcelのショートカット備忘録。個人的によく使うけど忘れがちなショートカットのみメモ。(感覚的にWindowsとほぼ同じやつは記載割愛) 作業内容 ショートカット セルの編集モードに入る c …

【備忘】ChromeのMarkdown Preview Plusプラグインでプレビューできなくなった時の対処法

ChromeでMarkdown Preview Plusというプラグインを使ってライトにマークダウンを読んでたんだが、急にマークダウンがPreviewできなくなった。 色々試した結果、なぜかファイルU …