in Ihrem Code infoSheetArray
ist eine Variable mit globalem Umfang, was bedeutet, dass sie von allen Code in Ihrem Programm zugänglich sind. Was nicht so offensichtlich ist, ist, dass Ihr Programm mehrmals & in verschiedenen "Maschinen" läuft, und deshalb kann es vorkommen, dass infoSheetArray
zurückgesetzt wird.
Jede separate Ausführung eines Skripts erfolgt in einer neuen Ausführungsinstanz, und jede davon hat ihren eigenen Satz von "globals". In Ihrem Beispiel-Snippet, z. B. onOpen()
, handelt es sich um eine automatische Triggerfunktion, die unabhängig aufgerufen wird, wenn das Arbeitsblatt im Webeditor geöffnet wird. Sie haben zwei andere Funktionen, grabInfo()
und itemSetup()
(nicht gezeigt), die unabhängig über Benutzermenüerweiterungen aufgerufen werden.
Wenn eine dieser drei Funktionen unabhängig aufgerufen wird, wird eine Ausführungsinstanz dafür erstellt, Ihr Programm wird geladen und die Ausführung beginnt. Alle globalen Anweisungen (z. B. var infoSheetArray = null;
) werden zuerst ausgewertet, gefolgt von der spezifisch ausgelösten Funktion. Änderungen an globalen Variablen bleiben nur in der Ausführungsinstanz bestehen, in der die Änderung aufgetreten ist, und nur so lange, wie diese Instanz benötigt wird. Sobald die Funktion abgeschlossen ist, ist die Instanz weggeblasen. Wenn Sie Werte zwischen Ausführungsinstanzen beibehalten müssen, müssen Sie eine Speichermethode wie die Properties Service oder eine External Database verwenden.
Zeigen Sie uns Ihren Code, damit wir sehen können, warum das, was Sie versuchen, nicht funktioniert. – jfriend00
ging voran und schrieb den Code. – mds93
Haben Sie einen Fehler erhalten? –