ドキュメントのオーナー以外がgetEmail()を実行した時にメールアドレスが表示されない

3,065 views
Skip to first unread message

藤本(ダイレクト)

unread,
Sep 11, 2014, 2:44:57 AM9/11/14
to google-app...@googlegroups.com
はじめまして。藤本と申します。
ひと月ほど前からGoogleScript を使い始めた初心者ですが
よろしくお願いいたします。


スプレッドシートのスクリプトエディタに下記のコードを書いて
動かしています。

  var textbox_to=app.createTextBox().setName("mail_to");

  var objUser = Session.getActiveUser();
  textbox_to.setText(objUser.getEmail());

  panel..add(textbox_to);



オーナーである私が実行した際にはパネル上のテキストボックスに
私のメールアドレスが表示されるのですが、
"編集者"として共有しているメンバーが実行した場合、
テキストボックスは空になってしまいます。

共有メンバーは実行する前にスクリプトの許可を実施しており
画像のとおり、該当の機能に対しアクセス許可状態となっております。

どなたか解決策をご存知の方、いらっしゃいましたら教えていただけませんでしょうか。
よろしくお願いいたします。


Ohashi, Keisuke

unread,
Sep 11, 2014, 3:13:13 AM9/11/14
to google-app...@googlegroups.com
To 藤本さん

こんにちは大橋(サントリー)です。
このGoogle Apps Scriptは gmail.com ドメインのアカウントで作成されたものでしょうか?
それともGoogle Appsのドメインのアカウントで作成されたものでしょうか?


Session.getActiveUser().getEmail()はいくつかの場合、取得ができません。
基本的には以下のいずれかの場合のみ取得ができます。

・スクリプトを作成した本人が動かしている または いずれかのユーザがScriptEditorから起動した
・作成者がGoogle Appsのユーザかつ、同じドメインのユーザがスクリプトを起動した
・Web アプリケーションとして動かしていてかつ、「次のユーザとしてアプリケーションを実行」が「ウェブアプリケーションにアクセスしたユーザ」になっている






2014年9月11日 15:44 藤本(ダイレクト) <a-fuj...@direct-site.com>:

--
このメールは Google グループのグループ「Google Apps API Japan」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには google-apps-api-...@googlegroups.com にメールを送信してください。
このグループに投稿するには google-app...@googlegroups.com にメールを送信してください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。



--
/**
* 株式会社 BFT
* 大橋 啓介 <oohashi keisuke>
* k-oh...@bfts.co.jp
*
* 〒100-0005
*  東京都千代田区丸の内1-6-5
*  丸の内北口ビルディング22階
* tel 03-6810-0091
* fax 03-3213-6655
*
* HP http://www.bfts.co.jp/
**/

藤本(ダイレクト)

unread,
Sep 11, 2014, 3:43:30 AM9/11/14
to google-app...@googlegroups.com
大橋(サントリー)さま

早速のお返事ありがとうございました。

オーナーである私のアカウントも、共有者のアカウントも
普通にGoogleの”アカウントを追加"というところから、
会社で使用している個人用のメールアドレスをユーザー名として作りました。

大橋さまから頂いた情報をもとに確認してみたのですが、、、

> ・スクリプトを作成した本人が動かしている または いずれかのユーザがScriptEditorから起動した

弊社の運用では難しいですね。


>・作成者がGoogle Appsのユーザかつ、同じドメインのユーザがスクリプトを起動した

Google Appsのユーザではないのです。(><)


>・Web アプリケーションとして動かしていてかつ、「次のユーザとしてアプリケーションを実行」が「ウェブアプリケーションにアクセスしたユーザ」になっている

"Webアプリケーション"がよく分からず、"Webアプリケーションとして導入"をしていません。

質問が変わってしまい恐縮なのですが、"Webアプリケーションとして導入"する際に、"アプリケーションにアクセスできるユーザ"を
"全員"にしてしまったら、該当のスプレッドシートも全体公開になってしまうのでしょうか?
それともスプレッドシートは共有範囲で公開され続けるのでしょうか。

勉強不足で申し訳ないです。


藤本

2014年9月11日木曜日 16時13分13秒 UTC+9 soundTricker:
このグループから退会し、グループからのメールの配信を停止するには google-apps-api-japan+unsub...@googlegroups.com にメールを送信してください。

このグループに投稿するには google-app...@googlegroups.com にメールを送信してください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。

Ohashi, Keisuke

unread,
Sep 11, 2014, 4:33:04 AM9/11/14
to google-app...@googlegroups.com
質問が変わってしまい恐縮なのですが、"Webアプリケーションとして導入"する際に、"アプリケーションにアクセスできるユーザ"を
"全員"にしてしまったら、該当のスプレッドシートも全体公開になってしまうのでしょうか?
それともスプレッドシートは共有範囲で公開され続けるのでしょうか。

スプレッドシート自体は公開されないです。

ただ、
どのようなスクリプトか詳細がわからないので誤っている可能性は有りますが、
現在多分スプレッドシート上でダイアログや、サイドバーの形式で
なにかUIを表示するようなスクリプトを作っているのであれば、
"Webアプリケーションとして導入"は独立したWebページとして表示する形に変わるので
使い勝手がかなり変わる可能性があります。


現状のスクリプトだと、メールアドレスを先にテキストボックス内に表示しておくような事をしたいのだと思いますが、
例えば1回目は自分で入力してもらって、
その値をPropertyService.getUserProperty().setProperty(key,value)を使って保存。
2回目以降はPropertyService.getUserProperty().getProperty(key)から取得するなどがいいかなと思います。

そうすれば2回目以降は基本的に同じ体感になるはずです。









2014年9月11日 16:43 藤本(ダイレクト) <a-fuj...@direct-site.com>:
このグループから退会し、グループからのメールの配信を停止するには google-apps-api-...@googlegroups.com にメールを送信してください。

このグループに投稿するには google-app...@googlegroups.com にメールを送信してください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。

藤本(ダイレクト)

unread,
Sep 11, 2014, 8:44:33 PM9/11/14
to google-app...@googlegroups.com
大橋(サントリー)さま

丁寧なお返事をありがとうございました。

UserPropertyに値をセットすることが可能なんですね!

頂いたヒントを元に仕様を見直します。
また、もうしばらくGoogleAppsScriptと付き合う必要がありそうなので
API仕様書をしっかり読んでみようと思います。

ありがとうございました。
今後ともよろしくお願い申し上げます。

藤本紋子

2014年9月11日木曜日 17時33分04秒 UTC+9 soundTricker:
このグループから退会し、グループからのメールの配信を停止するには google-apps-api-japan+unsubscri...@googlegroups.com にメールを送信してください。
Reply all
Reply to author
Forward
0 new messages