質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

解決済

1回答

1593閲覧

HTMLで特定のユーザのみが見れるようにしたい(GAS)

beginner100

総合スコア15

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

0クリップ

投稿2022/02/05 00:27

編集2022/02/08 04:46

スプレッドシートをデータベースとして、HTMLで特定のユーザのみがアクセスできるようにしたいですがうまくいきません。
許可してるアドレスからログインして、URLを入れても「error」側のhtmlが出てしまう状態です。

どなたかご教授いただけると嬉しいです。

スプレッドシートの「user」シート上のB列にメールアドレスを記載しています。

allowedUsersに直接["aaaa@aaa","bbbb@aaa"]と入れたときはうまくできるのですが、スプレッドシート上のデータから読み込むとうまくできないのですが、何が原因なのでしょうか。

デプロイは、次のユーザーとして実行は「自分」、アクセスできるユーザーは「Googleアカウントを持つ全員」になっております。

追記
作ったオーナーがURLをクリックした場合、「allowedUsers」に自分のemailが入っていない時と入っている時は正常に動きます。
別のアドレスでgoogleにログインし、URLをクリックしたときは「allowedUsers」にemailが入っていても入っていなくても、「error.html」の方が出てしまいます。
logで確認した所、
allowedUsers
情報 [ 'aaaaaaa@gmail.com', 'bbbbbbb@gmail.com', 'ccccccc@gmail.com' ]
effectiveUser
情報 aaaaaaa@gmail.com

コード.gs effectiveUser = Session.getActiveUser().getEmail(); function doGet() { let usersheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("user"); let before_allowedUsers = usersheet.getRange(1,2,usersheet.getLastRow()).getValues(); let allowedUsers = Array.prototype.concat.apply([], before_allowedUsers); if(allowedUsers.indexOf(effectiveUser) == -1) { let errorIndex = HtmlService.createTemplateFromFile("error"); return errorIndex.evaluate(); } else { let htmlIndex = HtmlService.createTemplateFromFile("index"); return htmlIndex.evaluate(); } }
index.html <!DOCTYPE html> <html> <head> <base target="_top"> </head> <body> <h1>アクセス権限があるユーザーです。</h1> </body> </html>
error.html <!DOCTYPE html> <html> <head> <base target="_top"> </head> <body> <h1>アクセス権限のないユーザーです。</h1> </body> </html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2022/02/05 01:02

うまくいきませんとは、どのような動作をするのでしょうか。
beginner100

2022/02/05 01:25

申し訳ありません。 許可してるアドレスからログインして、URLを入れても「error」側のhtmlが出てしまう状態です。
CHERRY

2022/02/05 02:27

各変数には、どのような値が入っているのか確認されましたか?
beginner100

2022/02/05 02:32

logで確認してみましたが、シートに記載されているアドレスは抽出できており、現在ログインしているユーザのアドレスも抽出できていました。
beginner100

2022/02/05 02:53

追記 作ったオーナーがURLをクリックした場合、「allowedUsers」に自分のemailが入っていない時と入っている時は正常に動きます。 別のアドレスでgoogleにログインし、URLをクリックしたときは「allowedUsers」にemailが入っていても入っていなくても、「error.html」の方が出てしまいます。
Eskee

2022/02/05 05:01

CHERRYさんも書いておられますが、とにかく各変数の中にどういう値が入っているかわからないと、なんとも言えませんね…
beginner100

2022/02/08 04:51

そうなのですね。うまく情報を伝えれず申し訳ありません。 logで確認した所、 allowedUsers 情報 [ 'aaaaaaa@gmail.com', 'bbbbbbb@gmail.com', 'ccccccc@gmail.com' ] effectiveUser 情報 aaaaaaa@gmail.com というように出ています。 aaaaaaa@gmail.comがオーナーとして作ってあり、起動させてみると、アドレスがない場合は「error」のhtmlがでて、アドレスがあるときは「index」のhtmlがでます。 ただ、bbbbb@gmail.comの人が起動させてみると、アドレスがallowedUsersの中に、あっても「error」のhtmlが出てしまいます。
guest

回答1

0

自己解決

申し訳ありません。
どうやら同じドメインでないとgetEmailではアドレスを取ることができないということが調べていたらわかりました。相談にのっていただきありがとうございます。
別の方法を考えてみます

投稿2022/02/08 12:37

beginner100

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問