はじめに
今回は、表題の通りGoogle Apps Script
を使用してGoogle spreadsheetsからGoogle DriveにJson形式で保存する方法を紹介したいと思います。
Googleアカウントさえあれば完結するので、興味のある方はぜひやってみてください!
デモ
このように、スプレッドシートの内容がjson形式で保存されていることが確認できます。
(nameについては生成されたダミーデータとなります)
やりかた
ここからは実際にやり方を解説していきます。
1. スプレッドシートからGASの画面を開く
画面上部のメニューから拡張機能→Apps Scriptを選択して、Google Apps Scriptのエディタが表示されたらOKです。
2. コードをコピペ
以下のコードをコピペします。
コードに簡単な解説コメントをつけているので、よければご覧ください。
function getFormattedCurrentTime() {
const now = new Date();
const year = now.getFullYear();
const month = ('0' + (now.getMonth() + 1)).slice(-2);
const day = ('0' + now.getDate()).slice(-2);
const hours = ('0' + now.getHours()).slice(-2);
const minutes = ('0' + now.getMinutes()).slice(-2);
const formattedTime = `${year}/${month}/${day}_${hours}:${minutes}`;
return formattedTime;
}
function generateJsonFromSheet() {
// 現在アクティブなスプレッドシートを取得
const sheet = SpreadsheetApp.getActiveSheet();
// シート名取得
const sheetName =sheet.getSheetName()
// データ範囲を取得(ヘッダー行も含む)
const data = sheet.getDataRange().getValues();
// 最初の行をヘッダーとして使用
const headers = data[0];
// データを配列に変換
const jsonArray = data.slice(1).map(row =>
headers.reduce((obj, header, i) => {
return {
...obj,
[header]: row[i],
};
}, {})
);
// JSON をフォーマットして出力
const jsonToString = `${JSON.stringify(jsonArray, null, 2)};`;
let folder;
// 指定した名のフォルダを取得、なければ新規作成
try {
const folders = DriveApp.getFoldersByName('jsonFromSheet');
folder = folders.next();
} catch (error) {
folder = DriveApp.createFolder('jsonFromSheet');
Logger.log("Created new folder 'jsonFromSheet'");
}
// JSON スクリプトを Google ドライブに保存する例
const file = folder.createFile(`${getFormattedCurrentTime()}-${sheetName}.txt`, jsonToString, MimeType.PLAIN_TEXT);
Logger.log(`File created: ${file.getUrl()}`);
}
// スプレッドシート読み込み時に実行される関数を定義
function onOpen() {
//メニューバーにJSON出力用メニューを追加
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
const entries = [{
name : "JSONでドライブに保存",
functionName : "generateJsonFromSheet"
}];
spreadsheet.addMenu("JSON", entries);
};
⌘+S
で保存できればこの工程は完了です。
3. 実際に動かしてみる
ここまでできたら、下画像のようにJSON
というメニューが表示されているはずなので、それをクリックしてみてください。(初回は権限の付与を求められるかもしれません)
"スクリプトが完了しました"とでたら、ドライブにjsonFromSheet
というフォルダと、中に日時-シート名.txt
のファイルが生成されていると思います。
おわりに
お読みいただきありがとうございました!
ちょっとした効率化をするならやはりGASは強いですね。。。