SpreadsheetのデータをGASを使ってSJISのCSVでダウンロードする方法-UnderscoreGS代替案更新

2021年2月にここで紹介していたUnderscoreGSというライブラリが使えなくなって途方にくれてたんですが、親切な方がわざわざ代替案を教えてくれて無事復活しました〜〜!ほんと感謝です・・・!早速一部書き換えましたのでどうぞ!

毎日毎日毎日毎日スプレッドシートを使って仕事をしていますが、地味に面倒だなと思っていたことが、SpreadsheetのデータをCSVでエクスポートする際に、デフォルトの機能だとUTF-8でしかDLできないということ。SpreadsheetのデータをS-JISのCSVにしたいときに、UTF-8形式のCSVでダウンロードして一度テキストエディタで開き、UTF-8からSJISに変換しないといけないのだ。めんどぃ〜

作業時間としては1分もかからないのですが、こういう地味にチリツモな作業に時間を取られるのが何よりも嫌なのでなんとかしたいと思って調べました。解決しました。こういうの調べるとだいたいエンジニア向けの記事が出てきて前提知識がすっとばされてるので私みたいな非エンジニアは躓くことが多いのです。

できたこと

Spreadsheetスプレッドシートで文字コードJISのCSVを生成1

いつも使っているスプレッドシートにCUSTOM MENUとしてSJISダウンロードリンクを追加。これを実行すると表示されているシートがSJISのCSVでGoogleDriveフォルダに保存されます。

やったこと

GASをコピペする

非エンジニア向けなので基本的には何でもコピペですませます。世の中の先人たちよ・・・ありがとう!!まず、GASのエディタを開きます。スプシのツール>スクリプトエディタ

Spreadsheetスプレッドシートで文字コードJISのCSVを生成2

今回ソースコードの元にしたのはこちらの記事です。

Spreadsheetスプレッドシートで文字コードJISのCSVを生成3

タイトルは適当につける。そして↑このコード.gsのところにをまるっと前述記事のサンプルコードを上書きして保存します。

スプシメニュー内にカスタムメニューを表示する

まず、onOpenの関数を実行します。

Spreadsheetスプレッドシートで文字コードJISのCSVを生成4

onOpenの関数を選んで左の▶ボタンを押す。そうするとスプレッドシートのヘルプのとなりにメニューが登場!(メニューを追加できるなんて全然知らなかったよ・・・!!)

Spreadsheetスプレッドシートで文字コードJISのCSVを生成1

ライブラリを追加する

メニューが表示されたからといって早まって↑のメニューから実行してもエラーがでます。「UnderscoreGS」というライブラリを使っているのでこれを呼び出す設定をしなければならない。これは「UnderscoreGS」で検索してでてきたこちらの記事を参照させてもらいました。

これまではUnderscoreGSというライブラリを使っていましたが、2021年使えなくなってしまったので代わりに「Underscore」を使います!

Spreadsheetスプレッドシートで文字コードJISのCSVを生成5

リソースのライブラリを開いて、

GASのライブラリUnderscoreGSの替わりとなるライブラリ

Add a libraryのところに 1PcEHcGVC1njZd8SfXtmgQk19djwVd2GrrW1gd7U5hNk033tzi6IUvIAV を記載して追加。これがUnderscoreのライブラリですのIDです。バージョンを2を選ぶ(多分なにかが選んであればOKぽい)

GASのライブラリUnderscoreGSの替わりとなるライブラリ

コピペしたソースで変更する必要があるところ

Underscoreを宣言

一番したの1行を追加

function outputSheetToCsvFile() {
// 定数
var fileName = “○○.csv”;
var contentType = “text/csv”;
var charSet = “Shift_JIS”;
var lineDelimiter = “,”;
var newLineChar = “\r\n”;
var _ = Underscore.load();

関数を修正する①

最初にコピペした元のコードで使っているDocsListという関数がすでに廃止されているようなので、代わりにDriveAppという関数にする。コード内のDocsList→DriveAppに書き換えて保存。

関数を修正する②

underscoreGS._xxx の部分を _.xxxに修正する。具体的には、

var csvString = underscoreGS._map(

var csvString =  _.map(

いざ実行

最初の1回は実行の許可が必要。画面に従って進んでいけばOK。

Spreadsheetスプレッドシートで文字コードJISのCSVを生成8

実行が終わると、GoogleDriveにファイルが生成された〜〜〜!※これローカルにDLしたいなーと思ったんだけどこれは時間あるときにまた探そう。

以上、まさに「30分でできることを3分で終わらせるために3時間かかった」の良い事例です。