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行目で呼び出しています。

 

以上です!

2020年・小学校でプログラミング教育が必修化

2020年、いよいよ小学校でプログラミング授業が始まります。続く2021年からは「中学校」で開始。2022年からは「高校」でも導入されます。

あと何年かしたら、あたりまえにプログラミングを使いこなす新入社員が入ってくるかもしれません。2020年、大人も一緒に学んでみませんか?

1週間のオンライン無料体験
いつでもどこでも今すぐ視聴OK