OSSなどを使う場合、ドキュメントがなかったり、マニュアルがあってもテーブル定義書がなかったりすることが
ありましたので、DBから直接テーブル定義書を作成するスクリプトを作りました。
ソースコード
https://github.com/kumanizm/table_spec_at_spreadsheet
READMEとか何も書いてない・・・
経緯
前述の通り、OSSを使うことが増えてきた背景もあり、
DBから直接、ドキュメントを作成したかったので。
完成品
使い方
↑githubからcloneしてきたcode.gsを貼り付けてください。
↑_configのMySQLの接続情報とスプレッドシートのファイルIDを適切な値に書き換えてください
↑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行あるので、デフォルトの状態の時には必要な分のみ残して行・列ともに削除する
感想
最近、スプレッドシートを使ってドキュメントを書くことが増えてきたので、出来ることはバシバシ自動化していきたい。