スプレッドシートをデータベースとして、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>

回答1件
あなたの回答
tips
プレビュー