您可以制作批处理文件来创建Google工作表吗?

问题描述 投票:1回答:1

我可以创建一个批处理文件来运行SQL查询并将该输出发送到g-suites上的Google工作表文档吗?

到目前为止,我有这个:

@ECHO OFF
SET SQLCMD="C:\SQLDev\sqldeveloper\sqldeveloper\extensions"
SET PATH="C:\SQLDev\Audit"
SET SERVER="\PROD"
SET DB="PRODDB"

-i "C:\SQLDev\sqldeveloper\"

SET OUTPUT="C:\Audit.xls"
CD %PATH%
ECHO %date% %time% > %OUTPUT%
for %%f in (*.sql) do (
    %SQLCMD% -S %SERVER% -d %DB% -i %%~f >> %OUTPUT%

PAUSE

我不太确定这是否可行,对正确方向的任何帮助将不胜感激。

batch-file google-sheets cmd scripting google-drive-api
1个回答
0
投票

根据您的代码,我了解您正在使用Oracle SQL。如果是这种情况,您可以使用Apps脚本的JDBC Connector连接到数据库,执行查询,然后将数据追加到工作表中。

此示例(从official documentation改编而成)如下所示:

/**
 * Replace the variables in this block with real values.
 * You can find the "Instance connection name" in the Google Cloud
 * Platform Console, on the instance Overview page.
 */
var connectionName = 'Instance_connection_name';
var user = 'user_name';
var userPwd = 'user_password';
var db = 'database_name';

var dbUrl = 'jdbc:oracle:thin:@//' + connectionName + '/' + db;

function importData() {
  var conn = Jdbc.getCloudSqlConnection(dbUrl, user, userPwd);
  var ss = SpreadsheetApp.create('Employees dump');
  var sheet = ss.getSheets()[0];

  // Insert sheet headers
  sheet.appendRow(['Name', 'Age', 'Location']);

  var stmt = conn.createStatement();
  stmt.setMaxRows(1000);
  var cursor = stmt.executeQuery('SELECT name, age, location FROM employees');

  while (cursor.next()) {
    var row = [cursor.getObject('name'),
               cursor.getObject('age'),
               cursor.getObject('location')];
    sheet.appendRow(row);
  }

  results.close();
  stmt.close();
}

在这种情况下,JDBC用于查询员工数据,并且同时使用SpreadsheetAppSpreadsheetSheet类将该数据插入到Sheets文档中。

[如果需要,将服务器上的以下IP列入白名单以允许从脚本(从https://developers.google.com/apps-script/guides/jdbc开始访问)也很重要:

64.18.0.0/20
64.233.160.0/19
66.102.0.0/20
66.249.80.0/20
72.14.192.0/18
74.125.0.0/16
173.194.0.0/16
207.126.144.0/20
209.85.128.0/17
216.239.32.0/19
© www.soinside.com 2019 - 2024. All rights reserved.