【问题标题】:Checking existing user using google apps script使用谷歌应用脚​​本检查现有用户
【发布时间】:2013-02-20 11:02:40
【问题描述】:

我正在电子表格上创建一个 Google 应用程序脚本,该脚本在从由 Google 表单提供支持的注册表单提交的域上创建用户,使用此方法创建用户很容易 UserManager.createUser(username, firstname, lastname,password); 但我面临的问题是如何检查被插入电子表格的用户是否已经存在。 我专门在https://developers.google.com/apps-script/ 上网查了一下,但没有发现任何帮助。

【问题讨论】:

    标签: javascript google-apps-script google-apps-for-education


    【解决方案1】:

    使用 try catch 块怎么样?简单但应该满足您的需求。

    try{
        // Get an existing user
        var user = UserManager.getUser("delete.me");
    }catch(e){
        // If user does not exist // i.e. error // create the user
        var newUser = UserManager.createUser('delete.me', 'Delete', 'Me', 'testing123');
    }
    

    【讨论】:

      【解决方案2】:

      Apps Script 没有直接的 API,但您可以使用 User Provisioning 使用 OAuth 2 和 UrlFetchApp。你可以看到一些sample integrationAudit API

      【讨论】:

      • 抱歉,您能解释更多吗?我如何在这样的事情中使用审计 API?
      • 您可以将 Audit API 替换为 Provisioning API。它们是非常相似的 API。我指出的帖子应该为您提供实现所需目标所需的结构和方法。
      【解决方案3】:

      这是获取我域中所有用户的脚本的 2 个版本,第二个版本使用 Arun 提到的 API 并返回可在记录器中查看的 XML 文档(对于此测试版本),您可以以合适的方式对其进行解析.

      另一个(实际上是第一个)使用UserManager 服务并在电子表格中显示结果。从那里(使用数组)可以很容易地检查用户是否已经拥有一个帐户。

      这里是代码:

      function findUsers(s) {     
        var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
        sheet.getDataRange().clear()
        var users = UserManager.getAllUsers();
        var r = new Array();
      //
        for( var i = 0 ; i < users.length ; i++ ){
          var Umail = users[i].getEmail(); 
          var UnomF = users[i].getFamilyName()
          var UnomP = users[i].getGivenName()
      
            if(users[i].getAgreedToTerms()){var Udejaconnect = 'oui'}else{var Udejaconnect = 'jamais'}
      //
           r.push([UnomF,UnomP,Umail,Udejaconnect]);
        }   
        r.sort(function(x,y){
        var xp = x[0].toLowerCase();
        var yp = y[0].toLowerCase();
        Logger.log(xp+'   '+yp)
        return xp == yp ? 0 : xp < yp ? -1 : 1;//  sort on name ascending
      }
      )
        var header = ['Nom de famille','Prénom','Email','Déjà Connecté?']
          sheet.getRange(1,1,1,r[0].length).setValues([header]).setFontWeight('bold')
          .setBackground('silver').setBorder(true,true,true,true,true,true);
          sheet.getRange(2,1,r.length,r[0].length).setValues(r);
      }
      
      // new version provisioning API
      //
      function getUserData() {
        var base = "https://apps-apis.google.com/a/feeds/";
        var fetchArgs = googleOAuth_("provisioning", base);
        var url = base + "domain.name" + "/user/2.0"; 
      
        var result = UrlFetchApp.fetch(url,fetchArgs).getContentText()
        var xml = Xml.parse(result);
        Logger.log(result)
        var users = xml.feed.entry;
      
        var r = [['Login', 'Nom complet', "Droits d'admin.", 'Quota Emails', 'Compte suspendu']];
        for( var i in users ) 
                  r.push([users[i].login.userName,
                  users[i].name.givenName+' '+users[i].name.familyName,
                  users[i].login.admin,
                  users[i].quota.limit,
                  users[i].login.suspended]);
        var s = SpreadsheetApp.getActiveSheet();
        s.clearContents();
        s.getRange(1, 1, r.length, r[0].length).setValues(r);
      
      }
      
      
      function googleOAuth_(name,scope) {
        var oAuthConfig = UrlFetchApp.addOAuthService(name);
        oAuthConfig.setRequestTokenUrl("https://www.google.com/accounts/OAuthGetRequestToken?scope="+scope);
        oAuthConfig.setAuthorizationUrl("https://www.google.com/accounts/OAuthAuthorizeToken");
        oAuthConfig.setAccessTokenUrl("https://www.google.com/accounts/OAuthGetAccessToken");
        oAuthConfig.setConsumerKey("anonymous");
        oAuthConfig.setConsumerSecret("anonymous");
        return {oAuthServiceName:name, oAuthUseToken:"always"};
      }
      

      【讨论】:

      • 非常感谢,我阅读了您的回答并理解了您对这种方法的意思,除了另一个答案是我所需要的,再次感谢。
      猜你喜欢
      • 1970-01-01
      • 2017-02-05
      • 2012-08-23
      • 1970-01-01
      • 2012-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多