

【前提】  
当方、G Suite Businessを利用しています。  
「Webアプリケーションとして導入」については下記の設定です。  
・次のユーザーとしてアプリケーションを実行:⇒自分  
・アプリケーションにアクセスできるユーザー:⇒組織の全員

【目的】  
社内システムにて、スプレッドシートを権限によって操作するにあたり、  
実行ユーザとは別に、開発者ユーザで処理をしたく検討しています。

【処理の流れと事象】  
１．スプレッドシートに紐づくGAS実行（一般ユーザ）  
↓  
２．Webアプリケーションとして導入したGAS（開発者ユーザ）  
という流れでロジックを制御したいのですが、  
スプレッドシート実行時のUrlFetchApp.fetchでWebアプリケーション側の  
doGetを呼び出すにあたり、認証ページへ飛んでしまい実行できない  
という事象が発生しています。

【検証と制約】  
Googleアカウントでログイン済のブラウザから２の実行はもちろん可能です。  
また、セキュリティ上の問題により、G Driveの公開は組織内としており、  
アクセス範囲として「全員」は選択できない状況となっています。

【お願いしたい回答】  
UrlFetchApp.fetchでWebアプリケーションとして導入したGASを呼び出すにあたり、  
事前に認証を通す方法を教えていただけないでしょうか。  
目的としてはGAS実行時に実行ユーザと開発ユーザを分けて処理をすることですので、  
本件に限らず、別の方法で実現されている方がいらっしゃればアドバイス頂けると助かります。


CC BY-SA 4.0
2019-08-26T11:50:57.067
57617
2019-09-02T04:45:42.433
35374
question
google-apps-script oauth
組織内で「Webアプリケーションとして導入」をした際の認証について


自己解決しました。  
GCPの認証情報から「APIキー」や「OAuth 2.0 クライアントID」などをいろいろ試しましたが、  
シンプルに解決・・・（投稿前にやってたつもりだったけど）  
headersにScriptApp.getOAuthToken()を使用すれば通りました。

[code]

        var payload = {
          // 省略
        };
        var param = {
          'method'      : 'POST'
         ,'headers' : { 'Authorization' : "Bearer " + ScriptApp.getOAuthToken() }
         ,'payload'     : payload
        };
        var response = UrlFetchApp.fetch('WebアプリケーションのURL', param);
    
[/code]


CC BY-SA 4.0
2019-09-02T04:45:42.433
57761
2019-09-02T04:45:42.433
35374
57617
answer