いろんなデータをGoogleのスプレッドシートで管理することが多くなったような気がします。
例えば、マスタデータの管理をスプレッドシート上に用意して、ボタンをポチッと押すだけでCSVに吐き出してくれるものがあったら便利そう!
そう思って、今回作ってみましたので、紹介したいと思います。
スプレッドシートを作成する
まずはGoogle Driveを開いてスプレッドシートのプロジェクトを作成しましょう。
最近、すき家にハマっているので「すき家の牛丼♪」という名前にしました。
スプレッドシートにデータを入力する
とりあえずなんでもいいのでデータを入力しておいてください。
自分は、牛丼とねぎキムチ牛丼とねぎ玉牛丼とシャキっと和風オニサラ牛丼の値段を入力しました。三種のチーズ牛丼を入力するのを忘れてました。
ボタンを設置する
トリガーとなるボタンをスプレッドシート上に設置したいと思います。
「挿入→図形描画」からボタンとして挿入したい図形を設定してください。
自分はこんな感じのボタンを設置しました。
Google Apps Scriptのプログラムを書く
スプレッドシートの上のメニューから「ツール→スクリプトエディタ」をクリックします。
すると、GASのプロジェクトが開かれます。
このように以下のスクリプトを入力します。
var folderId = '1iL8KSHbVBMY2iYkjVhg86b27lBVcLJOe'; function createCsv() { var csvData = loadData(); writeDrive(csvData); } function loadData() { var data = SpreadsheetApp.getActiveSheet().getDataRange().getValues(); var csv = ''; for(var i = 0; i < data.length; i++) { csv += data[i].join(',') + "\r\n"; } Logger.log(csv) return csv; } function writeDrive(csv) { var drive = DriveApp.getFolderById('1iL8KSHbVBMY2iYkjVhg86b27lBVcLJOe'); var fileName = 'Gyudon.csv' var contentType = 'text/csv'; var charset = 'utf-8'; var blob = Utilities.newBlob('', contentType, fileName).setDataFromString(csv, charset); drive.createFile(blob); }
1行目のfolderIdは保存したいドライブのディレクトリのIDを入力します。
IDは、ドライブのディレクトリを開いたURLの最後の文字列にあたります。
例えば、「https://drive.google.com/drive/u/0/folders/1iL8KSHbVBMY2iYkjVhg86b27lBVcLJOe」の場合は、「1iL8KSHbVBMY2iYkjVhg86b27lBVcLJOe」がIDになります。
ボタンにスクリプトを割り当てる
スプレッドシートに戻って、先程設置したボタンを右クリックして「︙」を押してみてください。
「スクリプトを割り当て」という項目が出ると思うので、それを選択してください。
どのスクリプトを割り当てますか?と聞かれると思うので、「createCsv」を入力してください。こうすることで、ボタンを押すとcreateCsvというメソッドが呼ばれるようになります。
ボタンを押してみる
さて、実際にボタンを押してみましょう。
すると、このように指定したディレクトリ以下にCSVが作成されると思います。自分の場合はGyudon.csvというファイル名を指定したので、そのファイル名でできています。
これを開いてみると、ちゃんとCSVとして出力されていることが確認できると思います。
品名,値段 牛丼,350 ねぎキムチ牛丼,480 ねぎ玉牛丼,480 シャキっと和風オニサラ牛丼,500
このようにして、簡単にスプレッドシートに入力されているデータをCSVとして出力することができました。 これをいい感じにサービスに適用すれば、マスタデータの管理コストがきっと減るでしょう!