Googleフォームの繰り返しできるテストを自動で埋める拡張機能
何度も繰り返し回答できる & 成績には最高スコアが用いられる場合
間違い提出をするたびに1から入力し直さなければならない
既に正答した設問は自動で埋めて欲しいt6o_o6t.icon
queryに各inputのnameに対する正答を渡してあげると良さそう?
スコアを表示画面のJavaScriptに、問題とnameの対応関係を表すオブジェクトが入っている
スコアを表示画面にて
正解だったものを抜き出すスクリプト
code:
まずFB_PUBLIC_LOAD_DATAから
これを作りたいt6o_o6t.icon
えびてくに飛び入り参加して発表ネタ用に実装したt6o_o6t.icon 発表はしなかったが
想定以上に参加者が多く時間が厳しいようだった
実装はしたが資料は作っていない
リファクタして拡張機能を配布したい
/icons/hr.icon
リファクタ
FB_PUBLIC_LOAD_DATA_を順次処理すると、問題に対する「ProblemId」と「ProblemDataItemId」が入手できる
ProblemDataItemIdを用いて、次の値「AnswerByUser」を実施する
document.querySelector("div[data-item-id='Id'] > div:nth-of-type(2n) > div").dataset.value
また、ProblemDataItemIdを用いて、次の値「ScoringOfAnswer」を取得する
document.querySelector("div[data-item-id='1610889796'] > div > div:last-child").textContent
以上から、次の概念を定義する
Problem
id
answer
AnswerByUser
Problemに対する回答。
id
scoring
ScoringOfAnswer
value
max
isPerfect
GitHubに公開した
現在の課題点
点数が付いていない問題はどうなるの?
テキスト入力や数値入力の場合はどうなるの?
チェックボックスの場合
CardType = 4
DataItemIdから見つかるDiv要素は、次のような形をしている
https://scrapbox.io/files/66aef69b08bce8001c108136.png
document.querySelectorAll("div[data-item-id='1610889796'] > div[role='list'] div[role='checkbox']")
このクエリで取得できる要素の、aria-checkedを見ていけば、チェックされた選択肢が分かる
labels = checkboxes.filter(checkbox => checkbox.ariaChecked === "true").map(checkbox => checkbox.ariaLabel)
参考