GAS를 사용하여 스프레드시트에 MySQL 테이블 정의 서 작성

OSS 등을 사용하는 경우 문서가 없거나 설명서가 있더라도 테이블 정의가 없을 수 있습니다.
있었기 때문에 DB에서 직접 테이블 정의를 작성하는 스크립트를 만들었습니다.

소스 코드



htps : // 기주 b. 코 m / 곰에 zm / 타 b ぇ_ s ぺ c_ 아 t_sp
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행이므로, 디폴트 상태시에는 필요한 분만 남겨 행·열 모두 삭제한다

감상



최근 스프레드시트를 사용하여 문서를 쓰는 것이 늘어나므로 할 수 있는 것은 바시바시 자동화해 나가고 싶다.

좋은 웹페이지 즐겨찾기