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 からコードを実行する際に問題に直面しています。このために、次の手順に従いました。
- https://console.developers.google.comにアクセスして、新しいプロジェクトを作成します
- 左側のメニューで、「ライブラリ」を選択します
次の画面で、Web アプリケーションを選択します。
新しい Web アプリケーションの名前を入力してください
「認可された JavaScript オリジン」で「http://localhost」を設定します。
現在、Google OAuth Playground での認証応答が必要になるため、「Authorized redirect URIs」に「https://developers.google.com/oauthplayground 」を設定します。そして、作成をクリックします。
成功すると、他のユーザー アプリケーションを認証するために Google OAuth Playground で提供するアカウントの「クライアント ID」と「クライアント シークレット」を受け取ります。
https://developers.google.com/oauthplaygroundにアクセスして、設定ギアをクリックします。ドロップダウン メニューで、[独自の OAuth 資格情報を使用する] をオンにし、手順 9 で受け取った [OAuth クライアント ID] と [OAuth クライアント シークレット] を入力します。
次に、「ステップ 1 API の選択と承認」セクションで、「Apps Script API v1」を選択し、さらに「https://www.googleapis.com/auth/forms」オプションを選択して、「承認」をクリックします 。
次に、選択したスコープにアクセスするアカウントの承認を求められます。これでは、作成コードの「アプリ スクリプト」が作成され、「クライアント ID」と「クライアント シークレット」が生成されるのと同じアカウントを使用しています。
- PlayGround にスクリプト ID を入力し、[要求本文の入力] ボタンをクリックして要求本文を設定します。リクエスト本文のパラメータを理解するには、ドキュメントhttps://developers.google.com/apps-script/api/reference/rest/v1/scripts/runを参照してください
- [リクエストを送信] をクリックします。
上記のすべての手順を実行した後、次の認証エラーが発生します。
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
}
}
事前に解決策をありがとう。