Pubblicato da Wesley Chun (@wescpy), Developer Advocate, Google Cloud
Google Cloud Platform (GCP) offre infrastrutture, prodotti serverless e API che consentono di creare, innovare e scalare. G Suite fornisce una raccolta di strumenti di produttività, API per sviluppatori, framework di estensibilità e piattaforme low-code che permettono l'integrazione con applicazioni, dati e utenti G Suite. Anche se ciascuna delle soluzioni è già valida di per se stessa, gli utenti possono ottenere maggiore potenza e flessibilità sfruttandole entrambe.
Nell'ultimo episodio del G Suite Dev Show mostrerò come trarre vantaggio dai potenti strumenti GCP utilizzando direttamente le applicazioni G Suite. Ad esempio BigQuery consente di ottenere informazioni preziose da enormi quantità di dati. Tuttavia, indipendentemente dalla "tecnologia" utilizzata, devi comunque giustificare e presentare i risultati al management, giusto? Hai già completato la parte relativa all'analisi dei big data, quindi perché non fare quel piccolo sforzo finale e sfruttare i punti di forza di G Suite? Nell'app di esempio inclusa nel video, illustriamo come passare dall'analisi dei big data a una presentazione per il management.
Questa app ha lo scopo di mostrarti cosa è possibile fare. Il video si sofferma un po' di più sul codice, mentre qui offriamo una panoramica più generale. Google Apps Script è una piattaforma di sviluppo serverless di G Suite che fornisce accesso diretto alle API G Suite oltre che ad alcuni strumenti GCP come BigQuery. La prima parte della tua app, ossia la funzione runQuery() invia una query a BigQuery from Apps Script, quindi si connette a Fogli Google per archiviare i risultati in un nuovo Foglio (nota che abbiamo tralasciato le definizioni delle variabili CONSTANT per brevità):
runQuery()
CONSTANT
function runQuery() { // make BigQuery request var request = {query: BQ_QUERY}; var queryResults = BigQuery.Jobs.query(request, PROJECT_ID); var jobId = queryResults.jobReference.jobId; queryResults = BigQuery.Jobs.getQueryResults(PROJECT_ID, jobId); var rows = queryResults.rows; // put results into a 2D array var data = new Array(rows.length); for (var i = 0; i < rows.length; i++) { var cols = rows[i].f; data[i] = new Array(cols.length); for (var j = 0; j < cols.length; j++) { data[i][j] = cols[j].v; } } // put array data into new Sheet var spreadsheet = SpreadsheetApp.create(QUERY_NAME); var sheet = spreadsheet.getActiveSheet(); var headers = queryResults.schema.fields; sheet.appendRow(headers); // header row sheet.getRange(START_ROW, START_COL, rows.length, headers.length).setValues(data); // return Sheet object for later use return spreadsheet; }
Restituisce un handle al nuovo Foglio Google che possiamo poi passare al componente successivo, utilizzando Fogli Google per generare un grafico dai dati BigQuery. Anche in questo caso tralasciamo le CONSTANTs e introduciamo la seconda parte dell'app, la funzione createColumnChart():
CONSTANTs
createColumnChart()
function createColumnChart(spreadsheet) { // create & put chart on 1st Sheet var sheet = spreadsheet.getSheets()[0]; var chart = sheet.newChart() .setChartType(Charts.ChartType.COLUMN) .addRange(sheet.getRange(START_CELL + ':' + END_CELL)) .setPosition(START_ROW, START_COL, OFFSET, OFFSET) .build(); sheet.insertChart(chart); // return Chart object for later use return chart; }
Il grafico viene restituito da createColumnChart() e possiamo utilizzarlo insieme all'oggetto Fogli per creare la presentazione di diapositive desiderata da Apps Script con Presentazioni Google nella terza parte della nostra app, la funzione createSlidePresentation():
createSlidePresentation()
function createSlidePresentation(spreadsheet, chart) { // create new deck & add title+subtitle var deck = SlidesApp.create(QUERY_NAME); var [title, subtitle] = deck.getSlides()[0].getPageElements(); title.asShape().getText().setText(QUERY_NAME); subtitle.asShape().getText().setText('via GCP and G Suite APIs:\n' + 'Google Apps Script, BigQuery, Sheets, Slides'); // add new slide and insert empty table var tableSlide = deck.appendSlide(SlidesApp.PredefinedLayout.BLANK); var sheetValues = spreadsheet.getSheets()[0].getRange( START_CELL + ':' + END_CELL).getValues(); var table = tableSlide.insertTable(sheetValues.length, sheetValues[0].length); // populate table with data in Sheets for (var i = 0; i < sheetValues.length; i++) { for (var j = 0; j < sheetValues[0].length; j++) { table.getCell(i, j).getText().setText(String(sheetValues[i][j])); } } // add new slide and add Sheets chart to it var chartSlide = deck.appendSlide(SlidesApp.PredefinedLayout.BLANK); chartSlide.insertSheetsChart(chart); // return Presentation object for later use return deck; }
Infine, abbiamo bisogno di un'applicazione driver che le richiami tutte e tre, una dopo l'altra, ossia la funzione createColumnChart():
function createBigQueryPresentation() { var spreadsheet = runQuery(); var chart = createColumnChart(spreadsheet); var deck = createSlidePresentation(spreadsheet, chart); }
Abbiamo tralasciato alcuni dettagli relativi al codice, ma spero che questo pseudocodice ti aiuti ad avviare il tuo progetto. Sei alla ricerca di un tutorial guidato per creare questa app, un passo alla volta? Fai pratica con il codelab g.co/codelabs/bigquery-sheets-slides. Puoi anche andare a vedere tutto il codice del nostro repository GitHub su github.com/googlecodelabs/bigquery-sheets-slides. Dopo aver eseguito correttamente l'app, vedrai i risultati dell'analisi dei big data rappresentati chiaramente in una delle Presentazioni Google.
Ma non è tutto, anzi questo è solo un esempio di come puoi sfruttare entrambe le piattaforme Google Cloud. L'app utilizzata è una di quelle presentate durante la sessione Cloud NEXT '18 di questa estate, che esplorava l'interoperabilità tra GCP e G Suite, ed è disponibile nel seguente video.
Resta sintonizzato, ci sono molti altri esempi in arrivo! Speriamo che questi video e il codelab ti ispirino a sviluppare le tue idee.