LoginSignup
48
27

More than 5 years have passed since last update.

GASを使って、スプレッドシートにMySQLのテーブル定義書を作成する

Last updated at Posted at 2018-09-06

OSSなどを使う場合、ドキュメントがなかったり、マニュアルがあってもテーブル定義書がなかったりすることが
ありましたので、DBから直接テーブル定義書を作成するスクリプトを作りました。

ソースコード

https://github.com/kumanizm/table_spec_at_spreadsheet
READMEとか何も書いてない・・・

経緯

前述の通り、OSSを使うことが増えてきた背景もあり、
DBから直接、ドキュメントを作成したかったので。

完成品

スクリーンショット 2018-09-06 18.20.43.png

スクリーンショット 2018-09-06 18.20.56.png

使い方

スクリーンショット 2018-09-06 18.23.54.png
↑シート名を「テーブル定義書」に書き換えてください

スクリーンショット 2018-09-06 18.24.26.png
↑スプレッドエディタを開く

スクリーンショット 2018-09-06 18.25.20.png
↑githubからcloneしてきたcode.gsを貼り付けてください。
↑_configのMySQLの接続情報とスプレッドシートのファイルIDを適切な値に書き換えてください

スクリーンショット 2018-09-06 18.25.42.png
↑set_table_list()という関数を実行すると、スプレッドシート上にテーブル定義書が作成されます。
※テーブル数によって若干時間がかかります。

ソースの中身説明

関数の概要

set_table_list():実行する関数
get_list_() : テーブルを配列に突っ込む
set_table_sheet_() : テーブル定義をシート別に作成する
set_list_sheet_() : テーブル一覧のシートを作成する

MySQLへの接続

  // 変数定義
  var con_str = 'jdbc:mysql://' + _config['DB_HOST'] + ':' + _config['DB_PORT'] + '/' + _config['DB_NAME'];
  var user_id = _config['DB_USER'];
  var user_pass = _config['DB_PASS'];

   // DBに接続
  var conn = Jdbc.getConnection(con_str, user_id, user_pass);
  var stmt = conn.createStatement();
  // 最大row数
  stmt.setMaxRows(1000);

SQL実行

  var str_query = "show table status like '" + TABLE + "'";
  var rs = stmt.executeQuery(str_query);
  while(rs.next()) {
    //getStringで列名を指定して取得
    table_ss.getRange("A"+(j+1)).setValue(rs.getString("Comment")).setBorder(true, true, true, true, true, true);

    j++;
    k++;
  }
  rs.close();

利用したSQL

・・・はソースの中をご確認ください。

注意点

スプレッドシートの仕様上、セルが200万個以上出来るとエラーになるようです。
そのため、不要なセルは削除する方が良いと思われます。

  if (table_ss.getMaxRows()==1000) {    
    table_ss.deleteColumns(11, table_ss.getMaxColumns()-11);
    table_ss.deleteRows(j, (table_ss.getMaxRows()-j));
  }

デフォルトは1000行あるので、デフォルトの状態の時には必要な分のみ残して行・列ともに削除する

感想

最近、スプレッドシートを使ってドキュメントを書くことが増えてきたので、出来ることはバシバシ自動化していきたい。

48
27
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
48
27