J'ai une page Fragment qui permet aux utilisateurs de créer une entrée. Quand ils cliquent sur le bouton Envoyer il fonctionne comme suit:essayez d'inclure l'adresse e-mail (ou le nom de l'utilisateur) Dans la notification Email
newSOEmailMessage(widget);
widget.datasource.createItem();
app.closeDialog();
Ce active un script client qui envoie un courrier électronique à l'utilisateur qui comprend les valeurs des champs de widget:
function newSOEmailMessage(sendButton) {
var pageWidgets = sendButton.root.descendants;
var currentuser = Session.getActiveUser().getEmail();
var htmlbody = currentuser + 'has created new system order for: <h1><span style="color:#2196F3">' + pageWidgets.ShowName.value + ' - ' + pageWidgets.UsersPosition.value + '</h1>' +
'<p>R2 Order #: <b>' + pageWidgets.R2OrderNumber.value + '</b>' +
'<p>Delivery Date: <b>' + pageWidgets.DeliveryDate.value.toDateString() + '</b>' +
'<p>Start of Billing: <b>' + pageWidgets.SOB.value.toDateString() + '</b>' +
'<p>Sales Person: <b>' + pageWidgets.SalesPerson.value + '</b>' +
'<p> </p>' +
'<p>Company: <b>' + pageWidgets.Company.value + '</b>' +
'<p> </p>' +
'<p>Notes: <b>' + pageWidgets.Notes.value + '</b>';
google.script.run
.withSuccessHandler(function() {
})
.withFailureHandler(function(err) {
console.error(JSON.stringify(err));
})
.sendEmailCreate(
'[email protected]',
'New order for: ' + pageWidgets.ShowName.value + ' - ' + pageWidgets.UsersPosition.value,
htmlbody);
}
Toutes ces œuvres bien, sauf l'option "currentuser" (après var htmlbody =). Avec le code ci-dessus, je reçois l'erreur suivante:
Session is not defined
at newSOEmailMessage (Notifications_ClientScripts:7:45)
at SystemOrders_Add.SubmitButton.onClick:1:1
Je voudrais « currentuser » pour égaler l'adresse e-mail (ou, de préférence le nom réel de l'utilisateur).
ex: "John Doe a créé un nouvel ordre de système pour ..."
Qu'est-ce que je manque?
Merci!
Note: Je l'ai déjà une configuration du modèle Directory pour afficher les noms des utilisateurs dans une section de commentaires pour un autre modèle. Ce modèle est en cours d'exécution qui suit (je suppose que je pourrais ajouter que mon modèle SystemOrders?)
// onCreate
var email = Session.getActiveUser().getEmail();
var directoryQuery = app.models.Directory.newQuery();
directoryQuery.filters.PrimaryEmail._equals = email;
var reporter = directoryQuery.run()[0];
Il semble que Session.getActiveUser() getEmail();. fait partie des Apps Script (https://developers.google.com/apps-script/reference/base/session#getActiveUser()) et ne peut pas être utilisé dans un script client. Pour les scripts Client, vous pouvez utiliser ceci: https://developers.google.com/appmaker/scripting/api/client#User – Wilmar