2

私はGoogleAppsScriptで作業しており、現在ログインしているユーザーの名前と名前をフィールドに事前入力しようとしています。Googleのドキュメントによると、これはgetGivenName()getFamilyName( )で取得できるはずです。次のコードを使用しているものを含めると:

  var myFirstName = Session.getEffectiveUser().getGivenName();
  var myLastName = Session.getEffectiveUser().getFamilyName();

次のエラーが発生します。

TypeError: Cannot find function getGivenName in object
TypeError: Cannot find function getFamilyName in object

一方、このコードは機能します。

var myEmail = Session.getEffectiveUser().getEmail();
var myUsername = Session.getEffectiveUser().getUsername();

これらの機能はまだ実装されていませんか?

4

1 に答える 1

1

あなたが参照しているドキュメントは、ドメイン内のGoogle Appsアカウントでのみ利用可能なものUserManagerの一部です...それとは関係なく、 Baseサービスの一部です。Domain ServiceSession.getEffectiveUser()

このような混乱を避けるために、オートコンプリート機能を使用できます。

編集:情報:ログに記録されたユーザーが連絡先に含まれている場合は、そこにあるものをすべて取得できます。コメント付きのサンプルコード:

function getUserInfo(){
   var email = Session.getEffectiveUser().getEmail();
   var userName = Session.getEffectiveUser().getUsername();
Logger.log(email+'  '+userName)
   if(ContactsApp.getContact(email)){ ;// if the logged user is in your contacts
     var fullName = ContactsApp.getContact(email).getFullName();// there a quite a few parameters available from here
     var nickName = ContactsApp.getContact(email).getNickname();// these are just examples
     var tel =  ContactsApp.getContact(email).getPhones();// returns an array of phones object
     var telnums=[]
      for(var t in tel){telnums.push(tel[t].getLabel()+"="+tel[t].getPhoneNumber())} ;// get the numbers ans store in an array
Logger.log(fullName+' / '+nickName+' / phone :'+telnums.join(' & ')) ;// join the array for proper display
   }
}

編集2:コメントに続いて: GOOGLE APPSアカウントの場合、このコードはユーザー情報を取得するために機能しています。ここのドキュメントuserを参照してください。オブジェクトを取得する必要があります

function getUserInfo(){
   var email = Session.getEffectiveUser().getEmail();
   var userName = Session.getEffectiveUser().getUsername();
Logger.log(email+'  '+userName)
   var user = UserManager.getUser(userName);// get the user object
   var firstName = user.getGivenName();// from there get whatever you want that is available (see autocomplete, not so much possibilities...)
   var familyName = user.getFamilyName();
  Logger.log(firstName+' / '+familyName)
}

注:このスクリプトを使用する前に、このAPIを承認する必要があります:

ここに画像の説明を入力してください

于 2013-02-21T14:29:13.370 に答える