データベースに接続し、Googleスプレッドシートにデータをフェッチします


7

私はこれについてしばらく考えていました。私たちは同僚とGoogleスプレッドシートを頻繁に使用していますが、重要なのは、MySQLデータベースに既にあるデータを常に書き留めておかなければならないということです。

スプレッドシートをMySQLサーバーに接続し、実行可能スクリプトなどを使用して特定の行にデータをフェッチする可能性はあるのでしょうか。

回答:


5

Google Apps ScriptsのJDBCサービスを使用できます。

スプレッドシートにJDBCサービスからのデータを取り込むスクリプトを作成する必要があります。

あなたが何をしたいのか正確にはわかりませんが、ドキュメントの例から始めることができます:

function foo() {
  var conn = Jdbc.getConnection('jdbc:mysql://<host>:3306/<instance>', 'user', 'password');
  var stmt = conn.createStatement();
  stmt.setMaxRows(100);
  var start = new Date();
  var rs = stmt.executeQuery('select * from person');

  var doc = SpreadsheetApp.getActiveSpreadsheet();
  var cell = doc.getRange('a1');
  var row = 0;
  while (rs.next()) {
    for (var col = 0; col < rs.getMetaData().getColumnCount(); col++) {
      cell.offset(row, col).setValue(rs.getString(col + 1));
    }
    row++;
  }
  rs.close();
  stmt.close();
  conn.close();
  var end = new Date();
  Logger.log('Time elapsed: ' + (end.getTime() - start.getTime()));
}

統合認証でこれを行う方法は?
FMFF

1

Google AppScript JDBCを使用する

ここにあなたを始めることができるいくつかのサンプルコードがあります。

 // Replace the variables in this block with real values.
    var address = 'Your DB Address Here';
    var user = 'Enter USER';
    var userPwd = 'YOUR PASSWORD';
    var db = 'DATABASE NAME';

    var dbUrl = 'jdbc:mysql://' + address + '/' + db;

    // Read up to 1000 rows of data from the table and log them.
   function readFromTable() {
      var conn = Jdbc.getConnection(dbUrl, user, userPwd);

      var start = new Date();
      var stmt = conn.createStatement();
      // Read up to 1000 rows of data from the table and log them.
      // stmt.setMaxRows(1000);
      var results = stmt.executeQuery('SELECT * FROM YOURTABLE');

      var sheet = SpreadsheetApp.getActiveSpreadsheet();
      var cell = sheet.getRange('A1');
      var numCols = results.getMetaData().getColumnCount();
      var row =0;

      while (results.next()) {
        var rowString = '';
        for (var col = 0; col < numCols; col++) {
          rowString += results.getString(col + 1) + '\t';
          cell.offset(row, col).setValue(results.getString(col +1 ));
        }
        row++
       Logger.log(rowString)
      }

      results.close();
      stmt.close();
      conn.close();

      var end = new Date();
      Logger.log('Time elapsed: %sms', end - start);
    }

1

SeekWellを使用すると、データベースに接続してSQLクエリをスプレッドシートに直接書き込むことができます。MySQLは無料枠に含まれています。

他のいくつかの機能:

  • データベース内のすべてのテーブルと列をすばやく表示し、ワンクリックで列の要約統計を取得します
  • サイドバー、大きなポップアウトウィンドウ、またはセル内からのクエリ
  • 結果は特定のセル、スクラッチシート、または直接ピボットテーブルに送信できます
  • 古いクエリを再実行する必要がある場合、クエリ履歴が保存され、表示できます
  • 一連のクエリを「Run Sheet」に保存して、複数のレポートを一度に更新できます

免責事項:私はこれを作りました。


0
select * from table_name
into outfile '/somelocation/data.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n';

Googleスプレッドシートを起動します。data.csvファイルを開きます。データはGoogleで使用するためにインポートされます。

または、リアルタイム接続が必要ですか?


まあリアルタイム接続のほうがいいですが、可能かどうかはわかりません。

私はグーグルドキュメントでそれをしていませんが、グーグルカレンダーでそれをしました。PHPでWebサーバーを実行している場合は、可能性があります。APIをダウンロードして、Googleから開発者IDを取得します。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.