0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GASを使用してスプレッドシートからGoogle Driveに保存 【Google Apps Script】

Posted at

はじめに

今回は、表題の通りGoogle Apps Scriptを使用してGoogle spreadsheetsからGoogle DriveにJson形式で保存する方法を紹介したいと思います。
Googleアカウントさえあれば完結するので、興味のある方はぜひやってみてください!

デモ

画面収録-2024-08-11-15.21.08.gif

このように、スプレッドシートの内容がjson形式で保存されていることが確認できます。
(nameについては生成されたダミーデータとなります)

やりかた

ここからは実際にやり方を解説していきます。

1. スプレッドシートからGASの画面を開く

スクリーンショット 2024-08-11 15.58.20.png

画面上部のメニューから拡張機能→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というメニューが表示されているはずなので、それをクリックしてみてください。(初回は権限の付与を求められるかもしれません)

スクリーンショット 2024-08-11 15.59.09.png

"スクリプトが完了しました"とでたら、ドライブにjsonFromSheetというフォルダと、中に日時-シート名.txtのファイルが生成されていると思います。

おわりに

お読みいただきありがとうございました!
ちょっとした効率化をするならやはりGASは強いですね。。。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?