2012-09-06 18 views
5
in Apps Script

Ich versuche, Name des aktuellen Benutzers zu identifizieren Noten zu machen, wer was wie folgt geändert:aktuellen Benutzer ermitteln

r.setComment("Edit at " + (new Date()) + " by " + Session.getActiveUser().getEmail()); 

aber es wird nicht funktionieren - Benutzer-Name eine leere Zeichenfolge ist. Wo bin ich falsch gelaufen?

+0

Bitte überprüfen Sie diese [post] (http://stackoverflow.com/questions/12172849/how-to-indentify-user-using-google-apps-script/). Ihr Skript kann das gleiche Problem haben. – megabyte1024

+0

http://stackoverflow.com/questions/12172849/how-to-indentify-user-usinging-google-apps-script/ Überprüfen Sie diese Antwort .... Sie erhalten die Idee –

Antwort

4

Ich nehme an, Sie haben dieses Stück Code-Set in einer onEdit-Funktion (oder einem On-Edit-Trigger) auszuführen.

Wenn Sie auf einem Kundenkonto sind, wird Session.getActiveUser)().getEmail() leer zurückgeben. Die E-Mail-Adresse wird nur zurückgegeben, wenn sich der Autor des Skripts und der Nutzer in derselben Google Apps-Domain befinden.

+0

Wenn Sicherheitsrichtlinien keinen Zugriff erlauben Die Identität des Benutzers, User.getEmail() gibt eine leere Zeichenfolge zurück. Die Umstände, unter denen die E-Mail-Adresse verfügbar ist, variieren: zum Beispiel ist die E-Mail-Adresse des Benutzers in keinem Kontext verfügbar, in dem ein Skript ohne die Autorisierung des Benutzers ausgeführt werden kann, wie ein einfacher onOpen (e) - oder onEdit (e) -Auslöser, a benutzerdefinierte Funktion in Google Tabellen oder eine Webanwendung, die so ausgeführt wird, "wie ich ausgeführt werde" (dh vom Entwickler statt vom Benutzer autorisiert). https://developers.google.com/apps-script/reference/base/session –

5

Gute Nachricht: Es ist möglich mit dieser Problemumgehung!

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; 
} 
-1
function onEdit(e) { 
    SpreadsheetApp.getUi().alert("User Email is " + e.user); 
} 
Verwandte Themen