JavaScript, HTML, CSS e... !
0 commenti

Il valore dell'id del grafico non è un INT32 valido

Invalid value at 'requests[0].create_sheets_chart.chart_id' (TYPE_INT32), 'u1800143865988'

I fogli di calcolo di Excel sono spesso utilizzati per la creazione di grafici (a barre, a torta, ecc...) a partire da dati presenti al loro interno. Questi grafici sono spesso esportati, o richiamati, da altre applicazioni per i più svariati motivi, primo tra tutti l'utilizzo all'interno di una presentazione in Power Point.

Con la Suite di Google è possibile ottenere lo stesso risultato, ovvero generare un grafico in uno Spreadsheet e richiamarlo all'interno di una presentazione in Google Slides. Il processo può essere effettuato manualmente, ma grazie a Google Apps Script è possibile effettuare l'operazione direttamente da codice.

Come indicato nella documentazione ufficiale (Adding Charts to Your Slides), quello che serve in primo luogo conoscere è l'ID dello Spreadsheet e l'ID del grafico presente all'interno del relativo Sheet.

La prima cosa che pertanto può venire in mente di fare è recuperare l'id utilizzando i metodi della Classe Sheet:

var ss = SpreadsheetApp.openById('1V8f9tFDPyGZ9v0EfI-F9ZVOov...');  // id dello Spreadsheet
var chart_id = ss.getSheets()[0].getCharts()[0].getId();

Provando tuttavia ad eseguire il codice (e quindi l'opportuna API) l'operazione non andrà a buon fine restituendo un errore simile al seguente 'Invalid value at 'requests[0].create_sheets_chart.chart_id' (TYPE_INT32), "u1800143865988"', Fig. 1:



Invalid value at 'requests[0].create_sheets_chart.chart_id' (TYPE_INT32), 'u1800143865988'

Fig. 1 - Invalid value at 'requests[0].create_sheets_chart.chart_id' (TYPE_INT32), 'u1800143865988'


Risulta subito evidente che la causa è dovuta al valore recuperato come ID del grafico (chart), nel caso specifico 'u1800143865988', che è un valore che non corrisponde al formato desiderato dal metodo, ovvero INT32.
Evidentemente quel valore non è ciò che ci aspettiamo, tant'è che provando a rieseguire nuovamente la funzione è facile notare come i numeri al suo interno cambino ad ogni esecuzione. Sicuramente non si tratta dell'id del grafico.

La soluzione che ho trovato è la seguente:

var ss = SpreadsheetApp.openById('1V8f9tFDPyGZ9v0EfI-F9ZVOov...');  // id dello Spreadsheet
var ch = Sheets.Spreadsheets.get(ss.getId(), { "fields": "sheets(charts/chartId)" });
var sheets = ch.sheets.map (function (d) {
    return { charts:d.charts }
});
var chart_id = sheets[0].charts[0].chartId + ''; // <-- Id del grafico (chart ID)

Nel mio caso, il valore di chart_id adesso è '2060826012', che a tutti gli effetti è un INT32 valido, infatti, eseguendo l'opportuna API passando il valore appena recuperato come parametro relativo all'id del chart posso confermare che l'operazione si conclude con successo ed il grafico appare nella slide indicata della presentazione in Google Slides.

Tags

Michele Pisani

Michele Pisani

Sviluppatore Javascript ed esperto in Digital Analytics

L'esperienza nel settore Digital Analytics unita ad anni di sviluppo in Javascript ha trovato la massima espressione in Google Apps Script che mi ha permesso, con estrema facilità e poche righe di codice, di realizzare potenti applicazioni interattive e processi automatizzati integrati con i prodotti della G Suite.

Come contattarmi
scrivi un commento

0 Commenti

Non ci sono commenti

Nessuno ha ancora commentato questo articolo, fallo tu per primo!

scrivi un commento

Scrivi un commento

Il tuo indirizzo email non sarà pubblicato.I campi contrassegnati da un * sono obbligatori
Puoi utilizzare i seguenti tag nei commenti:
[bold]testo[/bold] se vuoi evidenziare un testo con il grassetto[code]function helloworld() { }[/code] se vuoi pubblicare una porzione di codice[url]https://www.appsscript.it[/url] se devi riferirti ad un indirizzo web