我希望管理员的开始页面成为管理控制台,并为用户提供另一个页面-“ MyTickets”。该应用程序的默认起始页面为MyTickets,但我不希望管理员将其视为起始页面,也无法导航至该页面。
根据需要,我在Appmaker的模板“培训中心”中找到了一些有关Appstart的代码,具体取决于用户角色;但是,当我实现它时,我在控制台中收到此错误
页面在模板中正常工作时会不断加载。 这是我在客户端脚本中的应用中插入的代码:
/**
* Determines whether the user has specified role.
* @param {string} roleName - name of the role to check.
* @return {boolean} true if user has the role.
*/
function hasRole(roleName) {
return (app.user.roles.indexOf(roleName) > -1);
}
/**
* Determines whether the user is admin.
* @return {boolean} true if user is an admin.
*/
function isAdmin() {
return hasRole('Admins');
}
/**
* Gets start page depends on current user's roles.
* @return {Page} start page to be shown to user.
*/
function getUserStartPage() {
var result = app.pages.MyTickets;
var userRoles = app.user.roles;
if (isAdmin()) {
result = app.pages.Admin_console;
}
return result;
}
/**
* Overrides start page if loading is not specified.
* @param {string} currentPageName - name of current page to be loaded.
* @return {Page} start page to be shown to user.
*/
function overrideStartPage(currentPageName) {
if (currentPageName) {
return;
}
var startPage = getUserStartPage();
gotoPage(startPage);
}
/**
* Handles Application Start event.
* Loads Application Settings and then loads the app.
* @param {AppLoader} loader - instance of application loader.
*/
function onAppStart(loader) {
loader.suspendLoad();
google.script.url.getLocation(function(location) {
app.datasources.AppSettings.load({
success: function() {
overrideStartPage(location.hash);
loader.resumeLoad();
},
failure: function() {
overrideStartPage(location.hash);
loader.resumeLoad();
}
});
});
}
在应用程序的设置中,启动脚本为:
onAppStart(loader);
答案 0 :(得分:0)
我建议您进一步研究javascript或App maker文档。该解决方案非常简单,但是由于您在复制和粘贴源代码时不了解所发生的情况,因此很难解决此问题。这是您需要使用的代码:
loader.suspendLoad();
if(app.user.role.Admins){
app.showPage(app.pages.Admin_console);
} else {
app.showPage(app.pages.MyTickets);
}
loader.resumeLoad();
注意事项:上面的代码应与应用设置-应用启动脚本
参考:https://developers-dot-devsite-v2-prod.appspot.com/appmaker/scripting/api/client#App