LoginSignup
tentacos0210
@tentacos0210

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

GASのウェブアプリで他アカウントからだとdoPostが実行できない。

解決したいこと

GASのWebアプリで社内ツールを作成しています。
現在、編集権限がないと正常に動作しません。
スクリプトの編集権限を渡すことなく、公開したいです。

アプリの仕様

テキストボックスに番号を打ち込むと、スプレッドシートから番号を探して情報を表示するアプリです。
(社員番号を入力するとスプレッドシートから一致する社員番号を探して氏名を表示するイメージ)

起きていること

他のアカウントから実行しようとすると、最初のページは表示できますが、次のページに遷移しようとすると、GASプロジェクトのアクセス権限がないため実行できず、アクセス権をリクエストするよう要求されてしまいます。
おそらくdoPostが実行できていません。
ここでアクセス権を編集者にすると実行できます。
デプロイ設定の「次のユーザーとして実行」を「ウェブアプリケーションにアクセスしているユーザー」にしていますが、「自分」にしても結果は変わりませんでした。

doPostが実行できていないことを確認した。

別のスクリプトを作成し、画面遷移のみのコードを書いて検証しました。
オーナーアカウントでは正常に動作しましたが、他アカウントでは画面遷移ができませんでした。
<0712 7:00追記>
・画面遷移のみのスクリプト(閲覧権限)
https://script.google.com/d/1pTW8iXulzU6E1n0iiOmPzkImjyjpB7ZThKM4FUtGlw1QmUn61HnFxOXW/edit?usp=sharing
・デプロイしたURL(次のユーザーとして実行:自分)
https://script.google.com/macros/s/AKfycbwIFDiAaXuo-jU-7eqH8KtJ8K7tQ_du16DBR8f5k8R4lMKwrLBh-oLRLYwZMJATNz_G5g/exec

それぞれの設定

GASの公開設定
・次のユーザーとして実行 ウェブアプリケーションにアクセスしているユーザー
・アクセスできるユーザー Googleアカウントを持つ全員
スプレッドシートの公開設定
・リンクを知っている全員

この質問の経緯

下記質問のブラッシュアップ版です。
https://qiita.com/tentacos0210/questions/1e5c2219ec6ad7d52414

0

2Answer

このページのこの部分に記述されている通り、「次のユーザーとして実行:ウェブアプリケーションにアクセスしているユーザー」として実行している場合は、その社内ツールにアクセスしているユーザーのアカウントが、スクリプトが読み取るデータ元のスプレッドシートに対するアクセス権限を持っている必要があります。

アクセス権をリクエストするよう要求されてしまう原因は、ウェブアプリにアクセスするユーザーがデータ元のスプレッドシートに対するアクセス権限を持っていないからです。
(スクリプトに対するGASプロジェクトのアクセス権限を持っていないからではありません)

これはスプレッドシートのリンクの公開設定とは別です。(スプレッドシートのリンクを公開設定にしても、スクリプトからアクセスしてくるユーザーに対して無制限にスクリプトからのアクセス権限を与えたことにならない場合があります)

冒頭の、「編集権限を渡したくない」というのが、何を意味するのか不明瞭です。
仮に「スプレッドシートに対する直接の編集権限を与えたくない」という意味ならば、オーナーアカウントでスプレッドシートとスクリプトを作成・デプロイし直し、デプロイ時に「次のユーザーとして実行:自分(=オーナーアカウント)」に設定することで解決する可能性はあります。

ただしこの場合、スクリプトを実行するユーザーはすべてウェブアプリに対してオーナーアカウントでアクセスする扱いになるため、ログをユーザー別に取りたいというような場合はアカウント管理の機構をスクラッチでスクリプトに組み込むなど別途工夫する必要があります。
)ウェブアプリとしてはただデータを読み取るだけのようなので、そこまでログの必要性はあるかは疑問ですが)

冒頭の、「編集権限を渡したくない」というのが、「スクリプトに対する編集権限を与えたくない」という意味ならば、デプロイ時に「次のユーザーとして実行:自分(=オーナーアカウント)」にしたからといって、すべてのユーザーにスクリプトの編集権限を与えることにはなりません。これはあくまでウェブアプリへのアクセス権限の話にすぎません。

0Like

Comments

  1. @tentacos0210

    Questioner

    ご回答ありがとうございます。
    質問内容を更新しましたが、今回の事象ではスプレッドシートは関係ないと思われます。
    テストしたスクリプトを公開したので、ご覧いただきたいです。
    よろしくお願いします。

当方も「スクリプトの編集権限を渡すことなく、公開したいです。」で引っかかっていましたが、もしかすると複数の要因が絡んでると思われます。

  • デプロイ時に毎度「新しいデプロイ」を選択してしまっているために、URLが可変していることに気づかれてない
  • htmlのformタグにウェブアプリURLを直接貼ってしまっている(アクセス権の無い異なるページに移動しようとしている)
  • デプロイ時に「次のユーザーとして実行」を「自分」或いは「アカウントを持つ全員」を選択している
0Like

Comments

  1. @tentacos0210

    Questioner

    ご回答ありがとうございます。

    htmlのformタグにウェブアプリURLを直接貼ってしまっている(アクセス権の無い異なるページに移動しようとしている)

    が原因でした。
    ヘッドデプロイのIDを貼っていたためにアクセス権限が必要だとされていました。
    大変勉強になりました。
    ありがとうございました。

Your answer might help someone💌