4

Google アカウントに「Google フォーム」を作成する新しいスクリプトを作成しました。サンプルコードは次のとおりです。 ここに画像の説明を入力

function myFunction() {
var form = FormApp.create('New Form');
var item = form.addCheckboxItem();
item.setTitle('What condiments would you like on your hot dog?');
item.setChoices([
  item.createChoice('Ketchup'),
  item.createChoice('Mustard'),
  item.createChoice('Relish')
]);
form.addMultipleChoiceItem()
.setTitle('Do you prefer cats or dogs?')
.setChoiceValues(['Cats','Dogs'])
.showOtherOption(true);
form.addPageBreakItem()
.setTitle('Getting to know you');
form.addDateItem()
.setTitle('When were you born?');
form.addGridItem()
.setTitle('Rate your interests')
.setRows(['Cars', 'Computers', 'Celebrities'])
.setColumns(['Boring', 'So-so', 'Interesting']);

Logger.log('Published URL: ' + form.getPublishedUrl());
Logger.log('Editor URL: ' + form.getEditUrl());
}

次に、[発行] > [API 実行可能ファイルとしてデプロイ] に移動して、API 実行可能ファイルを作成します。 ここに画像の説明を入力

Google App Script からコードを直接実行すると、問題なく動作し、フォームも作成されます。

現在、Google OAuth 2.0 Playground からコードを実行する際に問題に直面しています。このために、次の手順に従いました。

  1. https://console.developers.google.comにアクセスして、新しいプロジェクトを作成します
  2. 左側のメニューで、「ライブラリ」を選択します
  3. App Script Library で、「Apps Script API」を検索して有効にします。 ここに画像の説明を入力

  4. 次に、資格情報メニューに移動し、[資格情報の作成] > [OAuth クライアント ID] をクリックします。 ここに画像の説明を入力

  5. 次の画面で、Web アプリケーションを選択します。

  6. 新しい Web アプリケーションの名前を入力してください

  7. 「認可された JavaScript オリジン」で「http://localhost」を設定します。

  8. 現在、Google OAuth Playground での認証応答が必要になるため、「Authorized redirect URIs」に「https://developers.google.com/oauthplayground 」を設定します。そして、作成をクリックします。

  9. 成功すると、他のユーザー アプリケーションを認証するために Google OAuth Playground で提供するアカウントの「クライアント ID」と「クライアント シークレット」を受け取ります。 ここに画像の説明を入力

  10. https://developers.google.com/oauthplaygroundにアクセスして、設定ギアをクリックします。ドロップダウン メニューで、[独自の OAuth 資格情報を使用する] をオンにし、手順 9 で受け取った [OAuth クライアント ID] と [OAuth クライアント シークレット] を入力します。 ここに画像の説明を入力

  11. 次に、「ステップ 1 API の選択と承認」セクションで、「Apps Script API v1」を選択し、さらに「https://www.googleapis.com/auth/forms」オプションを選択して、「承認」をクリックします 。ここに画像の説明を入力

  12. 次に、選択したスコープにアクセスするアカウントの承認を求められます。これでは、作成コードの「アプリ スクリプト」が作成され、「クライアント ID」と「クライアント シークレット」が生成されるのと同じアカウントを使用しています。 ここに画像の説明を入力

ここに画像の説明を入力

  1. 上記の手順で「認証コード」が生成され、さらに「リフレッシュ トークン」と「アクセス トークン」を生成できます。 ここに画像の説明を入力

  2. 次に、サービスを使用して Google アプリ スクリプト コードを実行する必要があります。[可能な操作の一覧] をクリックし、[スクリプトの実行] を選択します。 ここに画像の説明を入力

    1. 次に、Syntax が生成され、Google アプリ スクリプト プロジェクトから見つけることができるスクリプト ID を要求します。このために、Google App Script プロジェクトで、[ファイル] > [プロジェクトのプロパティ] をクリックすると、最後にスクリプト ID を参照するポップアップが開きます。 ここに画像の説明を入力

ここに画像の説明を入力

ここに画像の説明を入力

  1. PlayGround にスクリプト ID を入力し、[要求本文の入力] ボタンをクリックして要求本文を設定します。リクエスト本文のパラメータを理解するには、ドキュメントhttps://developers.google.com/apps-script/api/reference/rest/v1/scripts/runを参照してください

ここに画像の説明を入力

ここに画像の説明を入力

  1. [リクエストを送信] をクリックします。

上記のすべての手順を実行した後、次の認証エラーが発生します。

POST /v1/scripts/{ScriptId}:run HTTP/1.1
Host: script.googleapis.com
Content-length: 95
Content-type: application/json
Authorization: Bearer {your authentication}
{
  "function": "myFunction",
  "parameters": [],
  "sessionState": "Test",
  "devMode": true
}
HTTP/1.1 403 Forbidden
Content-length: 126
X-xss-protection: 1; mode=block
X-content-type-options: nosniff
Transfer-encoding: chunked
Vary: Origin, X-Origin, Referer
Server: ESF
-content-encoding: gzip
Cache-control: private
Date: Fri, 26 Oct 2018 13:44:57 GMT
X-frame-options: SAMEORIGIN
Alt-svc: quic=":443"; ma=2592000; v="44,43,39,35"
Content-type: application/json; charset=UTF-8
{
  "error": {
    "status": "PERMISSION_DENIED", 
    "message": "The caller does not have permission", 
    "code": 403
  }
}

ここに画像の説明を入力

事前に解決策をありがとう。

4

1 に答える 1