毎月の経理作業の効率化のために、GAS(Google Apps Script)でプログラムを書いている。
月毎にMFクラウドの仕訳帳を確認しながら、領収書などがちゃんと揃っているかをチェックするのを効率化したい。
そこで、MFクラウドから吐き出したcsvファイルをスプレッドシート化して、フィルタをかけて印刷できたら便利だなと思っている。
こちらの実装の続きをやった。
やったこと
GASでスプレッドシートを新規作成して、そのスプレッドシートのデフォルトのシートにcsvのファイルの中身を書き込む、という処理を自動化。
新規作成したスプレッドシートのIDを管理するために、スクリプトプロパティを活用してみた。
スプレッドシートの新規作成からファイルへの書き込みを1つの関数で一気に処理するならプロパティサービスを使う必要はない。
けど今回は、関数を複数に分けて1つずつ実行したいため、このような実装をしてみた。
作成した関数
ファイル名とファイルIDのペアをスクリプトプロパティにセットする関数
/** * 〈コード要約〉 * 指定のファイル名とファイルIDのペアをスクリプトプロパティにセットする * * @param {String} fileName - プロパティのキーとなるファイル名 * @param {String} fileId - プロパティの値となるファイルID */ function setToScriptProperty_(fileName, fileId) { prop = PropertiesService.getScriptProperties(); prop.setProperty(fileName, fileId); }
スクリプトプロパティを使って指定したスプレッドシート名からSpreadsheetオブジェクトを取得する関数
/** * 〈コード要約〉 * スプレッドシート名を指定するとスクリプトプロパティから対応するIDを取り出してSpreadsheetオブジェクトを取得する * * @param {String} ssName - 取得したいスプレッドシートの名前 * @return {Object} ss - Spreadsheetオブジェクト */ function openSpreadsheetBySsName_(ssName) { // スクリプトプロパティからID取り出し prop = PropertiesService.getScriptProperties(); const ssId = prop.getProperty(ssName); const ss = SpreadsheetApp.openById(ssId); return ss; }