2016-10-29 1 views
0

Ich habe die Schaltfläche in die Tabelle hinzugefügt und das Skript zugewiesen. Gibt es eine Möglichkeit, die E-Mail-Adresse des Benutzers zu ermitteln, der darauf geklickt hat? Skript bearbeitet die Daten so wahrscheinlich onEdit Trigger sollte funktionieren, aber Funktion mit Session.getActiveUser().getEmail() von diesem Trigger festgelegt erkennt den Benutzer nicht.Holen Sie den Benutzer, der auf die Schaltfläche in der Kalkulationstabelle geklickt hat

Danke

+0

Ist dies in einer Domäne oder einem öffentlichen Skript? –

+1

Wenn Sie ein "normales" Google Mail-Konto verwenden, ist es nicht möglich, die E-Mail-Adresse des Benutzers zu erhalten, wenn er auf die Tabelle zugreift. In Business-oder Bildungs-Version können Sie. –

+1

@Sergeinsas oh, das wusste ich nicht. Das ist Scheiße. Aber danke für Infos. Habe es getestet und du hast Recht. – Wlad

Antwort

4

Es ist möglich, mit normalen gmail Konten, mit diesem Problem zu umgehen!

Ich verwende einige Schutzfunktionen, die den Benutzer und den Besitzer des Dokuments erkennen, und ich speichern es in den Eigenschaften für eine bessere Leistung. Viel Spass damit!

function onEdit(e) { 
    SpreadsheetApp.getUi().alert("User Email is " + getUserEmail()); 
} 

function getUserEmail() { 
    var userEmail = PropertiesService.getUserProperties().getProperty("userEmail"); 
    if(!userEmail) { 
    var protection = SpreadsheetApp.getActive().getRange("A1").protect(); 
    // tric: the owner and user can not be removed 
    protection.removeEditors(protection.getEditors()); 
    var editors = protection.getEditors(); 
    if(editors.length === 2) { 
     var owner = SpreadsheetApp.getActive().getOwner(); 
     editors.splice(editors.indexOf(owner),1); // remove owner, take the user 
    } 
    userEmail = editors[0]; 
    protection.remove(); 
    // saving for better performance next run 
    PropertiesService.getUserProperties().setProperty("userEmail",userEmail); 
    } 
    return userEmail; 
} 
+0

Danke, Splice-Funktion zurückgegeben (Ich weiß nicht warum) immer Mail des Besitzers, aber im Debuggen kann ich sehen, dass andere Mails im Array sind. – Wlad

+0

Das stimmt. Die Spleißfunktion entfernt den Eigentümer, also ist es auch der Wert, den er zurückgibt, wenn Sie ihn protokollieren würden. –

Verwandte Themen