毎日毎日毎日毎日スプレッドシートを使って仕事をしていますが、地味に面倒だなと思っていたことが、SpreadsheetのデータをCSVでエクスポートする際に、デフォルトの機能だとUTF-8でしかDLできないということ。SpreadsheetのデータをS-JISのCSVにしたいときに、UTF-8形式のCSVでダウンロードして一度テキストエディタで開き、UTF-8からSJISに変換しないといけないのだ。めんどぃ〜
作業時間としては1分もかからないのですが、こういう地味にチリツモな作業に時間を取られるのが何よりも嫌なのでなんとかしたいと思って調べました。解決しました。こういうの調べるとだいたいエンジニア向けの記事が出てきて前提知識がすっとばされてるので私みたいな非エンジニアは躓くことが多いのです。
できたこと
![Spreadsheetスプレッドシートで文字コードJISのCSVを生成1](https://manualog.net/blog/wp-content/uploads/2020/01/7ef62c5616412416341614b4254a3274.png)
いつも使っているスプレッドシートにCUSTOM MENUとしてSJISダウンロードリンクを追加。これを実行すると表示されているシートがSJISのCSVでGoogleDriveフォルダに保存されます。
やったこと
GASをコピペする
非エンジニア向けなので基本的には何でもコピペですませます。世の中の先人たちよ・・・ありがとう!!まず、GASのエディタを開きます。スプシのツール>スクリプトエディタ
![Spreadsheetスプレッドシートで文字コードJISのCSVを生成2](https://manualog.net/blog/wp-content/uploads/2020/01/c0045eb950438e2b374aed88101c204f.png)
今回ソースコードの元にしたのはこちらの記事です。
![Spreadsheetスプレッドシートで文字コードJISのCSVを生成3](https://manualog.net/blog/wp-content/uploads/2020/01/1f82ec79b00fdd8a813363ae0a1c2585.png)
タイトルは適当につける。そして↑このコード.gsのところにをまるっと前述記事のサンプルコードを上書きして保存します。
スプシメニュー内にカスタムメニューを表示する
まず、onOpenの関数を実行します。
![Spreadsheetスプレッドシートで文字コードJISのCSVを生成4](https://manualog.net/blog/wp-content/uploads/2020/01/f1e8301f8a992674dea1215b96792876.png)
onOpenの関数を選んで左の▶ボタンを押す。そうするとスプレッドシートのヘルプのとなりにメニューが登場!(メニューを追加できるなんて全然知らなかったよ・・・!!)
![Spreadsheetスプレッドシートで文字コードJISのCSVを生成1](https://manualog.net/blog/wp-content/uploads/2020/01/7ef62c5616412416341614b4254a3274.png)
ライブラリを追加する
メニューが表示されたからといって早まって↑のメニューから実行してもエラーがでます。「UnderscoreGS」というライブラリを使っているのでこれを呼び出す設定をしなければならない。これは「UnderscoreGS」で検索してでてきたこちらの記事を参照させてもらいました。
これまではUnderscoreGSというライブラリを使っていましたが、2021年使えなくなってしまったので代わりに「Underscore」を使います!
![Spreadsheetスプレッドシートで文字コードJISのCSVを生成5](https://manualog.net/blog/wp-content/uploads/2020/01/ad22aeaf10ac76c8900c856eea0f12bc.png)
リソースのライブラリを開いて、
![GASのライブラリUnderscoreGSの替わりとなるライブラリ](https://manualog.net/blog/wp-content/uploads/2020/01/a8ad00bca1b055347cb0f1712af87d28-1024x625.png)
Add a libraryのところに 1PcEHcGVC1njZd8SfXtmgQk19djwVd2GrrW1gd7U5hNk033tzi6IUvIAV を記載して追加。これがUnderscoreのライブラリですのIDです。バージョンを2を選ぶ(多分なにかが選んであればOKぽい)
![GASのライブラリUnderscoreGSの替わりとなるライブラリ](https://manualog.net/blog/wp-content/uploads/2020/01/80c3af33be8259d2bccafc5dc7d5b881-1024x619.png)
コピペしたソースで変更する必要があるところ
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](https://manualog.net/blog/wp-content/uploads/2020/01/29740a10d4fad70d849fcb3a809e247f.png)
実行が終わると、GoogleDriveにファイルが生成された〜〜〜!※これローカルにDLしたいなーと思ったんだけどこれは時間あるときにまた探そう。
以上、まさに「30分でできることを3分で終わらせるために3時間かかった」の良い事例です。