2016-10-12 3 views
1

Ich habe ein Google-Blatt, das eine Master-Datenbank von Bestellungen ist, die von einer Anzahl von Händlern eingegeben werden. Daher muss dieses Master-Blatt einen eingeschränkten Bearbeitungszugriff haben. Ich möchte eine Reihe anderer Blätter erstellen (eine für jeden Händler), über die sie Bestellungen eingeben und über ein Skript, das in diesen Blättern abläuft, meinem Masterblatt hinzufügen. Ist das möglich? Wenn ich dies versuchte, verweigerte es ihnen den Zugriff auf das Masterblatt. Gibt es einen Weg dahin?Gibt es eine Möglichkeit, das Google Docs-Skript unter der Autorisierung des Skriptbesitzers auszuführen?

Antwort

0

Eine Arbeit, die ich für dieses Problem verwendet habe, ist ein installable trigger in einem regelmäßigen Zeitintervall zu arbeiten.

Installierbare Trigger werden vom Besitzer der Berechtigung des Triggers ausgeführt, sodass er sowohl auf die Haupttabelle als auch auf die einzelnen Händler zugreifen kann. Der Trick besteht darin, einer Funktion einen zeitgesteuerten Trigger zuzuweisen, der das Blatt jedes Händlers auf Aktualisierungen hin überprüft und dann den passenden Wechsel zur Haupttabelle vornimmt. Sie sollten sicher sein, dass der Trigger nicht zu lange zum Ausführen oder Ausführen zu häufig dauert, da Sie eine limited amount of script run time each day haben.

Etwas wie folgt aus:

function myTrigger() { 
    var time = new Date(); 
    // maybe check to see if it's night or other times that dealers won't update 
    // that way you can return early and don't waste quota hours 

    var dealerSpreadsheetIds = ["id1", "id2", ...]; 
    var dealerSheetName = "Deals"; 

    for (var i = 0; i < dealerSpreadsheetIds.length; i++) { 
    var sheet = SpreadsheetApp.openById(dealerSpreadsheetIds[i]).getSheetByName(dealerSheetName); 
    // check Deals sheet ranges for updates 
    // if there is an update, update the main spreadsheet 
    } 
} 
+0

Eigentlich wollte ich das Gegenteil tun, was bedeutet, haben die Händler Blätter den Abzug ausführen und die Großschot aktualisieren. Trotzdem werde ich deinen Vorschlag versuchen. Wie stellen Sie die Zeit ein, zu der der Trigger ausgeführt wird? Tut mir leid, wenn ich eine sehr grundlegende Frage stelle - ich habe noch nie zuvor installierbare Trigger verwendet. – Moorley

+0

Keine Sorge. Klicken Sie in der Skriptdatei auf Ressourcen> Auslöser für aktuelle Projekte. Es öffnet sich ein Dialog, in dem Sie auf "Neuen Trigger hinzufügen" klicken können. Eine Zeile sollte zur Triggertabelle hinzugefügt werden, in der Sie das Skript zum Ausführen und das Ereignis zum Auslösen des Skripts auswählen können. Wählen Sie "Zeitgesteuert" in der Spalte "Ereignis". Wählen Sie dann den Timer-Zeitplan und wie oft das Skript ausgeführt werden soll. –

+0

Wenn Sie möchten, können Sie den Händlern den Eindruck geben, die Hauptdatenbank zu aktualisieren, indem Sie ein Skript ausführen, das ihre Aktualisierungen in einem ausgeblendeten Blatt speichert, auf das sie Bearbeitungszugriff haben. Dieses Blatt kann wie ein Postausgang in einem Büro wirken, wo die Sekretärin (Ihr zeitgesteuertes Skript) Zugang zu allen Bereichen hat, in die die Formulare verschoben werden müssen, aber der Mitarbeiter muss nicht unbedingt Zugang haben. –

Verwandte Themen