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:
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.
Non ci sono commenti
Nessuno ha ancora commentato questo articolo, fallo tu per primo!
scrivi un commento