Ich versuche, eine Web-App mit Google Apps Script zu entwickeln, die in eine Google Site eingebettet werden soll und einfach den Inhalt eines Google Sheets anzeigt und mithilfe einiger einfacher Parameter filtert. Zumindest vorerst. Ich kann später weitere Funktionen hinzufügen.
Ich habe eine funktionierende App, aber festgestellt, dass das Filtern manchmal eine Weile dauern kann, da der Client manchmal bis zu 5 Sekunden auf eine Antwort vom Server warten musste. Ich habe beschlossen, dass dies höchstwahrscheinlich darauf zurückzuführen ist, dass ich die Tabelle jedes Mal nach ID mit der SpreadsheetApp-Klasse geladen habe, wenn sie aufgerufen wurde.
Ich beschloss, die Tabellenwerte in meiner doGet
-Funktion mit dem CacheService zu puffern und die Daten stattdessen jedes Mal aus dem Cache abzurufen.
Allerdings hat das aus irgendeinem Grund dazu geführt, dass ein 2-dimensionales Array nun als 1-dimensionales Array behandelt wird. Und so lande ich beim Anzeigen der Daten in einer HTML-Tabelle mit einer einzigen Spalte, wobei jede Zelle von einem einzelnen Zeichen belegt ist.
Das ist, wie ich das Caching implementiert habe; soweit ich aus der API-Referenz erkennen kann, mache ich nichts falsch:
function doGet() {
CacheService.getScriptCache().put('data', SpreadsheetApp
.openById('####')
.getActiveSheet()
.getDataRange()
.getValues());
return HtmlService
.createTemplateFromFile('index')
.evaluate()
.setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
function getData() {
return CacheService.getScriptCache().get('data');
}
Dies ist das erste Mal, dass ich eine richtige Anwendung mit GAS entwickle (Ich habe es zuvor in Sheets verwendet). Gibt es etwas sehr Offensichtliches, das mir entgeht? Ich habe keine Typbeschränkungen auf der CacheService-Referenzseite gesehen...