質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

321閲覧

【Google Forms API】JSONファイルの値を選択肢に反映させることが出来ない

sh0u

総合スコア17

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2023/01/28 14:53

前提

*前回質問させて頂いた「配列を特定のキー,階層にした状態で、JSON形式に変換したい」に関連する質問です。宜しければご覧下さい
https://teratail.com/questions/hztqqe08vcxwai

Google Forms APIをPython経由で使用しています。
事前に出力したJSONファイルを、Google Forms APIのKey「ChoiceQuestion.option」に反映しようとしたところ、エラーが発生し、フォームに反映させることが出来ませんでした。

実現したいこと

  • 用意したJSONファイルの値を、値「choiceQuestion.options」に反映できるようにする

発生している問題・エラーメッセージ

<HttpError 400 when requesting https://forms.googleapis.com/v1/forms/**********:batchUpdate?alt=json returned "ChoiceQuestion.options cannot contain duplicate values". Details: "ChoiceQuestion.options cannot contain duplicate values"> File "F:\Python\Google Forms API\FAURS2023\updateForms.py", line 78, in <module> formId=FORM_ID, body=update).execute() ^^^^^^^^^ googleapiclient.errors.HttpError: <HttpError 400 when requesting https://forms.googleapis.com/v1/forms/**********:batchUpdate?alt=json returned "ChoiceQuestion.options cannot contain duplicate values". Details: "ChoiceQuestion.options cannot contain duplicate values">

該当のソースコード・データ

入力するJSONファイル

イメージ説明

JSON

1// utf-8で出力済 2[ 3 { 4 "value": "['あいうえお'](['aiueo'])", 5 "image": { 6 "sourceUri": "['https://*****']" 7 } 8 }, 9 // 以下、同様のキー,値が続く 10]

ソースコード

py

1# 初期化 2from __future__ import print_function 3 4from apiclient import discovery 5from httplib2 import Http 6from oauth2client import client, file, tools 7 8import json 9 10SCOPES = "https://www.googleapis.com/auth/drive" 11DISCOVERY_DOC = "https://forms.googleapis.com/$discovery/rest?version=v1" 12FORM_ID = "**********" 13AVATARSINFO_JSON = open('avatarsInfo.json', 'r', encoding="utf-8") 14 15# 認証情報トークン 16store = file.Storage('token.json') 17creds = None 18if not creds or creds.invalid: 19 flow = client.flow_from_clientsecrets('client_secrets.json', SCOPES) 20 creds = tools.run_flow(flow, store) 21 22form_service = discovery.build('forms', 'v1', http=creds.authorize( 23 Http()), discoveryServiceUrl=DISCOVERY_DOC, static_discovery=False) 24 25json_dict = json.load(AVATARSINFO_JSON) 26 27update = { 28 "includeFormInResponse": True, 29 "requests": [{ 30 "updateFormInfo": { 31 "info": { 32 "title": "SurveyForm", 33 "description": "調査フォームです。" 34 }, 35 "updateMask": "title,description" 36 } 37 }], 38 "requests": [{ 39 "updateItem": { 40 "item": { 41 "title": "テスト質問文", 42 "description": "テスト質問文概要", 43 "questionItem": { 44 "question": { 45 #エラー発生 46 "choiceQuestion": { 47 "type": "CHECKBOX", 48 "options": [ 49 json_dict 50 ] 51 } 52 } 53 } 54 }, 55 "location": { 56 "index": 0 57 }, 58 "updateMask": "title,description,questionItem" 59 } 60 }] 61} 62 63# 質問を追加 64question_setting = form_service.forms().batchUpdate( 65 formId=FORM_ID, body=update).execute() 66 67# 結果を出力 68getresult = form_service.forms().get(formId=FORM_ID).execute() 69print("\033[32m" + "Done!" + "\033[0m") 70

試したこと・参考URL

Pythonでファイルに書き込まれたJSON文字列をパースする - Qiita
https://qiita.com/r-wakatsuki/items/105ef1b4ad843eb0e095

フォームやテストを更新する - Google Developers
https://developers.google.com/forms/api/guides/update-form-quiz?hl=ja

REST Resource: forms - Google Developers
https://developers.google.com/forms/api/reference/rest/v1/forms#ChoiceQuestion

補足情報(FW/ツールのバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問