2016-09-14 1 views
0

Ich verwende Datenüberprüfung in Google Tabellen, um wie eine Schaltfläche zu funktionieren, um eine Funktion aufzurufen. Eine Möglichkeit besteht darin, meine Tabellenkalkulation (call reset() - Funktion) zurückzusetzen, damit alle Daten gelöscht werden. Eine weitere Option ist das Speichern meiner Tabelle (Call saveAs() -Funktion). Wenn ich reset() und saveAs() ausführen, funktionieren beide Funktionen ordnungsgemäß. Meine onEdit-Funktion funktioniert auch und ruft reset() und saveAs() auf, je nachdem, welche Auswahl ich in der Tabellenkalkulationszelle treffe.Apps Script Data Validation Funktionsschaltfläche

Mein Problem ist die saveAs() -Funktion wird nicht nur abgeschlossen, wenn es von der OnEdit() -Funktion aufgerufen wird. Wenn auf seine eigenen genannt, es ist in Ordnung, aber wenn man von onEdit() aufgerufen es wird für jeden an dieser Linie

var parentFolder = DriveApp.getFileById(thisFileId).getParents().next(); 

Hier ist die gesamte Funktion

function saveAs(){ 
    var sheet = SpreadsheetApp.getActiveSpreadsheet(); 
    var d = new Date(); 

    var thisFileId = SpreadsheetApp.getActive().getId(); 
    var parentFolder = DriveApp.getFileById(thisFileId).getParents().next(); 
    DriveApp.getFileById(sheet.getId()).makeCopy(d+"", parentFolder); 

} 

Ich wäre sehr dankbar auflegte Erklärungen und/oder Lösungen!

Vielen Dank.

Antwort

1

Es stellt sich heraus, der Grund, warum es aufgelegt wurde, ist, weil der Skript-Trigger "onEdit apps" ein "einfacher Auslöser" im Gegensatz zu einem "installierbaren Auslöser" ist. Das bedeutet, dass es keinen Zugriff auf Änderungsdateien und -verzeichnisse hat, weshalb es so aussah, als ob es beim Aufruf der DriveApp-Klasse aufgehört hätte.

Um dies zu beheben, habe ich einen installierbaren onEdit-ähnlichen Trigger erstellt, um meine saveAs-Funktion aufzurufen und es hat funktioniert!