В настоящее время у меня есть фрагмент страницы со следующим кодом, который создает запись для источника данных и отправляет электронное письмо (код ниже), уведомляя всех.
Кнопка:
newSalesEmailMessage(widget);
widget.datasource.createItem();
app.closeDialog();
Код уведомления по электронной почте клиентского скрипта:
/**
* Calls a server method to send an email.
* @param {Widget} sendButton - widget that triggered the action.
*/
function newSalesEmailMessage(sendButton) {
var pageWidgets = sendButton.root.descendants;
var fullName = app.datasources.Directory.item.FullName;
var htmlbody = '<b><font size="3">' + fullName + '</font></b>' + ' has created a new sales entry for: ' +
'<h1><span style="color:#2196F3">' +pageWidgets.ProjectName.value + '</h1>' +
'<p>Contact: <b>' + pageWidgets.Contact.value + '</b>' +
'<p>Sales Person: <b>' + pageWidgets.SalesPerson.value + '</b>' +
'<p>Notes: <b>' + pageWidgets.Notes.value + '</b>';
google.script.run
.withSuccessHandler(function() {
})
.withFailureHandler(function(err) {
console.error(JSON.stringify(err));
})
.sendEmailCreate(
'[email protected]',
'New Sales Entry for: ' + pageWidgets.ProjectName.value,
htmlbody);
}
код onCreate для модели:
// onCreate
var email = Session.getActiveUser().getEmail();
var directoryQuery = app.models.Directory.newQuery();
directoryQuery.filters.PrimaryEmail._equals = email;
var reporter = directoryQuery.run()[0];
record.reported_by = email;
record.reported_full_name = reporter.FullName;
record.Date = new Date();
Все работает, кроме опции fullName. Он продолжает вытягивать мое имя, даже когда другой пользователь создает запись (может быть, потому что я администратор?). У меня есть настройка модели каталога, и, похоже, она работает, когда я показываю полное имя для комментариев пользователей.
Я хотел бы иметь fullName = имя человека, который в настоящее время создает запись.
Спасибо за помощь!
Сценарий запуска приложения:
// App startup script
// CurrentUser - assuming that it is Directory model's datasource
// configured to load record for current user.
loader.suspendLoad();
app.datasources.Directory.load({
success: function() {
loader.resumeLoad();
},
failure: function(error) {
// TODO: Handle error
}
});