Google Apps Script

【GAS】スプレッドシートの特定シートからCSVファイルを作成・保存する

GASを使って、スプレッドシートの「特定シート」をCSVファイルにするスクリプトを紹介します。

 

sheet-csv1

 

上図のスプレッドシートの「シート1」を、このようなCSVファイルにします。

sheet-csv2

特定シートをCSVファイルにして保存する

シートをCSVファイルとしてエクスポートするメソッドってないの…?と探してみましたが、GASでは無いようです。

そこで、シートをCSVにする流れを以下にまとめてみました。順を追ってコードを作っていきます。

手っ取り早く完成コードだけ見たい!という方は【コードまとめ】シートをCSVファイルにするへジャンプしてください。

シートをCSVファイルとして保存する流れ

「シート」を「CSVファイル」にするには、下記の5処理をします。

  • 【処理1】シートのデータ範囲を「二次元配列」で取得する
  • 【処理2】「二次元配列」を「カンマ区切りの文字列(CSV)」にする(CSV = Comma Separated Value)
  • 【処理3】処理2で作成したCSVから、Blobオブジェクトを作成する
  • 【処理4】CSVファイルの保存先フォルダを指定
  • 【処理5】処理3で作成したBlobオブジェクトからCSVファイルを作成する

【処理1】シートのデータ範囲を「二次元配列」で取得する

シートのデータ範囲を取得します。変数valuesに二次元配列が格納されています。

【処理2】「二次元配列」を「カンマ区切りの文字列(CSV)」にする

二次元配列valuesに、Arrayオブジェクトのjoinメソッドで改行コード(\n)を付与して、変数csvに格納します。

変数csvの中身は、ログ出力で確認できるとおり、「カンマ区切りの文字列」です。

これは、「配列に文字列を付与すると全体が文字列になる」という仕組みを利用しています。二次元配列valuesに、文字列’\n’を付与することで、全体が文字列になります。

【処理3】処理2で作成したCSVから、Blobオブジェクトを作成する

文字列csvを利用して、Blobオブジェクトを作成します。UtilitiesクラスのnewBlobメソッドのリファレンスはこちら

【処理4】CSVファイルの保存先フォルダを指定

「フォルダID」でフォルダを指定します。「フォルダID」とは、GoogleドライブのURLの folders/ 配下の文字列です。

(例)https://drive.google.com/drive/u/0/folders/1234567890-ABCDEFGHIJ
→フォルダIDは「1234567890-ABCDEFGHIJ

【処理5】処理3で作成したBlobオブジェクトからCSVファイルを作成する

createFileメソッドでCSVファイルを作成します。

【コードまとめ】シートをCSVファイルにする

処理1~処理5をまとめたコードがこちらです。

【番外編】スプレッドシートと同じフォルダにCSVを保存する

前述のコードは、CSVファイルの保存先フォルダを「フォルダID」で指定しました。

処理対象のスプレッドシートが存在するフォルダと「同じフォルダ」にCSVファイルを保存することも可能です。

※Googleドライブでは、1つのファイルを複数フォルダに追加することができますが、このスクリプトは、1つのフォルダにのみ追加されていることを前提としています。

(参考)【GAS】Googleドライブでファイルが追加されている全てのフォルダを取得する

違いは18行目以降です。自身が存在するフォルダ(親フォルダ)を取得する関数「getParentFolder」を作り、18行目で呼び出しています。

 

以上です!