相同的脚本为Google Apps帐户域用户提供了不同的结果

时间:2013-09-08 15:43:53

标签: google-apps-script

我是两个Google Apps for Education帐户的超级管理员,我在两个域中获得了相同脚本的不同结果。这是脚本:

function listUsers(s) {     
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
  sheet.getDataRange().clear()
  var users = UserManager.getAllUsers();
  var r = new Array();
  var f = new Array();
  var Uconnect = '';

  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()){Uconnect = 'yes'}else{Uconnect = 'never'}

    r.push([UnomF,UnomP,Umail,Uconnect]);
    if(i%2==0){
      f.push(['#eeeeff','#eeeeff','#eeeeff','#eeeeff']);
    }else{
      f.push(['#ffffff','#ffffff','#ffffff','#ffffff']);
    }
  }   
  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);
  sheet.getRange(2,1,f.length,f[0].length).setBackgroundColors(f);
  sheet.getDataRange().setVerticalAlignment('middle').setFontSize(11);
}

该脚本非常简单:它获取所有域用户并在电子表格中显示带有一些格式的列表。它还应该显示用户已使用domainUser类中的getAgreedToTerms()方法初始化其帐户。

在其中一个域中,我获得了真实的结果(与我在Google Apps管理控制台中看到的相同),但在第二个getAgreedToTerms()中,true始终返回{{1}},即使对于新创建的用户也是如此。(从我可以看到的域名设置是相同的。)

我在某处遗失了什么吗?有没有其他方法可以检查用户是否已将自己与自己的帐户连接起来?

我知道这不是一个真正的编程问题,但我也知道我们很多人都有Google Apps帐户和管理用户:-)所以我觉得值得尝试。

1 个答案:

答案 0 :(得分:0)

域名是否在相似时间创建?谷歌从旧的GApps基础架构过渡后,已经进行了大量的后端升级,我们已经看到了有时不会传播的设置。

我想最好的方法是使用Admin SDK,看看你的结果是否与你通过Apps Script包装器获得的结果一致。非常酷,您可以在页面内进行身份验证并获得结果。

https://developers.google.com/admin-sdk/directory/v1/reference/users/get