Có anh chị nào từng dùng google sheets để lấy dữ liệu từ MSSQL không cho em xin code với ạ!
function onOpen() {
var spreadsheet = SpreadsheetApp.getActive();
var menuItems = [
{name: 'Lấy dữ liệu', functionName: 'readData'}
];
spreadsheet.addMenu('SQLServer', menuItems);
}
var address = '171.244.39.128'; //IP của bạn
var user = 'AnhDom';
var userPwd = '1234!@#$GPe';
var db = 'Test';
var dbUrl = 'jdbc:sqlserver://' + address + ';databaseName=' + db;
function readData() {
var conn = Jdbc.getConnection(dbUrl, user, userPwd);
var stmt = conn.createStatement();
var results = stmt.executeQuery('SELECT * FROM [dbo].[tblTest]');
var metaData=results.getMetaData();
var numCols = metaData.getColumnCount();
var sheet = SpreadsheetApp.getActiveSheet();
sheet.clearContents();
var arr=[];
for (var col = 0; col < numCols; col++) {
arr.push(metaData.getColumnName(col + 1));
}
sheet.appendRow(arr);
while (results.next()) {
arr=[];
for (var col = 0; col < numCols; col++) {
arr.push(results.getString(col + 1));
}
sheet.appendRow(arr);
}
results.close();
stmt.close();
sheet.autoResizeColumns(1, numCols+1);
}
Cám ơn anh nhiều!
Bạn dùng code sau nhé:
Mã:function onOpen() { var spreadsheet = SpreadsheetApp.getActive(); var menuItems = [ {name: 'Lấy dữ liệu', functionName: 'readData'} ]; spreadsheet.addMenu('SQLServer', menuItems); } var address = '171.244.39.128'; //IP của bạn var user = 'AnhDom'; var userPwd = '1234!@#$GPe'; var db = 'Test'; var dbUrl = 'jdbc:sqlserver://' + address + ';databaseName=' + db; function readData() { var conn = Jdbc.getConnection(dbUrl, user, userPwd); var stmt = conn.createStatement(); var results = stmt.executeQuery('SELECT * FROM [dbo].[tblTest]'); var metaData=results.getMetaData(); var numCols = metaData.getColumnCount(); var sheet = SpreadsheetApp.getActiveSheet(); sheet.clearContents(); var arr=[]; for (var col = 0; col < numCols; col++) { arr.push(metaData.getColumnName(col + 1)); } sheet.appendRow(arr); while (results.next()) { arr=[]; for (var col = 0; col < numCols; col++) { arr.push(results.getString(col + 1)); } sheet.appendRow(arr); } results.close(); stmt.close(); sheet.autoResizeColumns(1, numCols+1); }
Xem link: https://docs.google.com/spreadsheets/d/1Pw9vx0f-DCFOaUYlOv--o5-a7k3t0pmVSldieFkI2VM/edit#gid=0
Tự động cập nhật là sao bạn?Cám ơn anh nhiều!
Em chạy thử rồi có điều nó hơi chậm!
Anh ơi cho em hỏi cái này nó tự động cập nhật luôn hay sao anh?
Ý em nói là khi có sự thay đổi dữ liệu trong DB thì ở google sheet nó cũng thay đổi theo đó anhTự động cập nhật là sao bạn?
À ra thế, nếu muốn đồng bộ với dữ liệu trong CSDL SQLServer thì bạn phải click nút lấy dữ liệu để có được dữ liệu mới nhất nhé.Ý em nói là khi có sự thay đổi dữ liệu trong DB thì ở google sheet nó cũng thay đổi theo đó anh
Cám ơn anh nhiều!À ra thế, nếu muốn đồng bộ với dữ liệu trong CSDL SQLServer thì bạn phải click nút lấy dữ liệu để có được dữ liệu mới nhất nhé.
Còn việc ngược lại là lưu dữ liệu từ google sheet vào SQL Server làm sao bác ơi, hỗ trợ em với
Bạn dùng code sau nhé:
Mã:function onOpen() { var spreadsheet = SpreadsheetApp.getActive(); var menuItems = [ {name: 'Lấy dữ liệu', functionName: 'readData'} ]; spreadsheet.addMenu('SQLServer', menuItems); } var address = '171.244.39.128'; //IP của bạn var user = 'AnhDom'; var userPwd = '1234!@#$GPe'; var db = 'Test'; var dbUrl = 'jdbc:sqlserver://' + address + ';databaseName=' + db; function readData() { var conn = Jdbc.getConnection(dbUrl, user, userPwd); var stmt = conn.createStatement(); var results = stmt.executeQuery('SELECT * FROM [dbo].[tblTest]'); var metaData=results.getMetaData(); var numCols = metaData.getColumnCount(); var sheet = SpreadsheetApp.getActiveSheet(); sheet.clearContents(); var arr=[]; for (var col = 0; col < numCols; col++) { arr.push(metaData.getColumnName(col + 1)); } sheet.appendRow(arr); while (results.next()) { arr=[]; for (var col = 0; col < numCols; col++) { arr.push(results.getString(col + 1)); } sheet.appendRow(arr); } results.close(); stmt.close(); sheet.autoResizeColumns(1, numCols+1); }
Xem link: Liên kết: https://docs.google.com/spreadsheets/d/1Pw9vx0f-DCFOaUYlOv--o5-a7k3t0pmVSldieFkI2VM/edit#gid=0 Liên kết: https://docs.google.com/spreadsheets/d/1Pw9vx0f-DCFOaUYlOv--o5-a7k3t0pmVSldieFkI2VM/edit#gid=0
sao lại có mail của tôi vậyCòn việc ngược lại là lưu dữ liệu từ google sheet vào SQL Server làm sao bác ơi, hỗ trợ em với
Chắc là dán liên kết nên nhúng GoogleSheet vào diễn đàn luôn ấy bác Mạnh, giao diện em dùng cũng hiện mail của em.sao lại có mail của tôi vậy
Em reply nó qua ásao lại có mail của tôi vậy
đang tò mò cái chỗ sao bài trước đó nó lại nổi lên cái mail của tôi thôi còn nếu tôi bấm vào link ra cái mail của chính tôi thì lại không có hỏiChắc là dán liên kết nên nhúng GoogleSheet vào diễn đàn luôn ấy bác Mạnh, giao diện em dùng cũng hiện mail của em.
a duyệt àEm reply nó qua á
Bài này để ngủ quên 6 năm nay tới Lúc Mạnh vận dụng nó cho Google Sheet rồi
Bạn dùng code sau nhé:
Mã:function onOpen() { var spreadsheet = SpreadsheetApp.getActive(); var menuItems = [ {name: 'Lấy dữ liệu', functionName: 'readData'} ]; spreadsheet.addMenu('SQLServer', menuItems); } var address = '171.244.39.128'; //IP của bạn var user = 'AnhDom'; var userPwd = '1234!@#$GPe'; var db = 'Test'; var dbUrl = 'jdbc:sqlserver://' + address + ';databaseName=' + db; function readData() { var conn = Jdbc.getConnection(dbUrl, user, userPwd); var stmt = conn.createStatement(); var results = stmt.executeQuery('SELECT * FROM [dbo].[tblTest]'); var metaData=results.getMetaData(); var numCols = metaData.getColumnCount(); var sheet = SpreadsheetApp.getActiveSheet(); sheet.clearContents(); var arr=[]; for (var col = 0; col < numCols; col++) { arr.push(metaData.getColumnName(col + 1)); } sheet.appendRow(arr); while (results.next()) { arr=[]; for (var col = 0; col < numCols; col++) { arr.push(results.getString(col + 1)); } sheet.appendRow(arr); } results.close(); stmt.close(); sheet.autoResizeColumns(1, numCols+1); }
Xem link: Liên kết: https://docs.google.com/spreadsheets/d/1Pw9vx0f-DCFOaUYlOv--o5-a7k3t0pmVSldieFkI2VM/edit#gid=0 Liên kết: https://docs.google.com/spreadsheets/d/1Pw9vx0f-DCFOaUYlOv--o5-a7k3t0pmVSldieFkI2VM/edit#gid=0