web-dev-qa-db-fra.com

Comment connecter Google Sheets à la base de données

J'essaie de renseigner automatiquement des données brutes sur une feuille de mon fichier de feuilles Google avec une requête.

Il ne semble pas que les feuilles aient une fonctionnalité intégrée comme Microsoft Excel.

Est-ce que je manque quelque chose? J'ai trouvé un module complémentaire qui a depuis été abandonné et ne fonctionne plus, appelé données partout: https://www.dataeverywhere.com/use-database-sheets

Y at-il autre chose qui a remplacé cela?

6
obizues

Comme indiqué ici , vous pouvez utiliser les services JDBC de Google Apps Scripts . Vous devrez écrire un script qui remplit votre feuille de calcul avec les données du service JDBC.

Lecture de la base de données

Cet exemple montre comment lire un grand nombre d'enregistrements à partir de la base de données, en boucle si nécessaire sur l'ensemble de résultats.

// Replace the variables in this block with real values.
var address = 'database_IP_address';
var user = 'user_name';
var userPwd = 'user_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();
  stmt.setMaxRows(1000);
  var results = stmt.executeQuery('SELECT * FROM entries');
  var numCols = results.getMetaData().getColumnCount();

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

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

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

J'espère que cela t'aides!

6
abielita

Si vous ne voulez pas lancer votre propre solution, consultez SeekWell . Il vous permet de vous connecter à des bases de données et d’écrire des requêtes SQL directement dans Sheets.

Quelques autres fonctionnalités:

  • Visualisez rapidement toutes les tables et les colonnes d'une base de données et obtenez des statistiques récapitulatives sur une colonne en un clic.
  • Requête dans la barre latérale, une grande fenêtre contextuelle ou dans une cellule Les résultats peuvent être envoyés à une cellule spécifique, une feuille de travail ou directement à un tableau croisé dynamique
  • Votre historique de requête est enregistré et visible si vous devez ré-exécuter une requête plus ancienne.
  • Vous pouvez enregistrer un ensemble de requêtes sur une "feuille d'exécution" pour mettre à jour plusieurs rapports à la fois.

Disclaimer: J'ai fait ceci.

"Navigateur de base de données" est une solution prête à l'emploi disponible en tant que add-on dans GSuite Marketplace pour se connecter aux bases de données et interroger (avec le constructeur de requêtes) la base de données et importer directement les résultats dans la feuille Google.

Cet add-on maintient également la liste des connexions et des requêtes, ce qui facilite sa ré-exécution. Si vous recherchez une alternative au module complémentaire que vous avez mentionné, le navigateur de base de données est un bon choix.

2
Jasperin

Ceci est l'exemple de code permettant de lire les données d'une instance SQL Server et de les insérer dans Google Sheet. Le code crée un élément de menu pour recharger les données et efface chaque fois le contenu pendant qu'il conserve le format.

function onOpen() {

var spreadsheet = SpreadsheetApp.getActive();

var menuItems = [
    {name: 'Get Data', functionName: 'readData'}
];
spreadsheet.addMenu('My Functions', menuItems);
}


// Replace the variables in this block with real values.
var address = 'ip-address:port'; //ex. '10.1.1.1:1433'
var user = 'db-username';
var userPwd = 'db-password';
var db = 'db-name';

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].[User]');
 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);


}
1
Mojtaba