Appmaker:具有用户角色的主页“ AppStart”

时间:2019-12-07 23:23:15

标签: google-app-maker

我希望管理员的开始页面成为管理控制台,并为用户提供另一个页面-“ MyTickets”。该应用程序的默认起始页面为MyTickets,但我不希望管理员将其视为起始页面,也无法导航至该页面。

根据需要,我在Appmaker的模板“培训中心”中找到了一些有关Appstart的代码,具体取决于用户角色;但是,当我实现它时,我在控制台中收到此错误

enter image description here

页面在模板中正常工作时会不断加载。 这是我在客户端脚本中的应用中插入的代码:

/**
 * 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);

1 个答案:

答案 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