簡體   English   中英

使用Google Apps腳本檢查現有用戶

[英]Checking existing user using google apps script

我正在電子表格上制作Google應用腳本,該電子表格在由Google表單支持的注冊表單提交的域上創建用戶,使用此方法創建用戶很容易UserManager.createUser(username, firstname, lastname,password); 但我面臨的問題是如何檢查插入電子表格的用戶是否已經存在。 我通過https://developers.google.com/apps-script/專門檢查了互聯網,但沒有找到任何幫助。

使用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');
}

Apps腳本中沒有直接API,但您可以使用OAuth 2和UrlFetchApp使用用戶配置 您可以看到與Audit API的一些示例集成

以下是我的域中所有用戶的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"};
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM