forked from muratalperen/GoogleFormsAutoFiller
-
Notifications
You must be signed in to change notification settings - Fork 0
/
GoogleForm.js
50 lines (46 loc) · 2.3 KB
/
GoogleForm.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/**
* Fills inputs on forms page with the data
*/
function FillGoogleForms() {
chrome.storage.sync.get("formData", function(result) {
formData = result["formData"];
var FormElement = document.getElementsByTagName("form")[0];
// Fill text fields
var selectorStr = "input[type='text'], input[type='email'], input[type='number'], input[type='tel'], input[type='url']";
var fields = FormElement.querySelectorAll(selectorStr);
fields.forEach(function(item) {
var formTitle = item.closest("div[role='listitem']").querySelector("div[role='heading']").firstChild.textContent;
var answer = formData[formTitle.trim()];
if (answer) {
item.value = answer;
item.setAttribute("data-initial-value", answer);
item.setAttribute("badinput", "false");
// TODO: find the class that hides input inside text by reversed css finding
item.nextElementSibling.style.display = "none";
}
});
// Fill textareas
var fields = FormElement.querySelectorAll("textarea");
fields.forEach(function(item) {
var formTitle = item.closest("div[role='listitem']").querySelector("div[role='heading']").firstChild.textContent;
var answer = formData[formTitle.trim()];
if (answer) {
item.value = answer;
item.setAttribute("data-initial-value", answer);
item.setAttribute("badinput", "false");
// TODO: find the class that hides input inside text by reversed css finding
item.parentElement.previousElementSibling.style.display = "none";
}
});
// Handle multiple options presented as buttons or checkboxes
var multiOptionFields = FormElement.querySelectorAll("[role='checkbox'], [role='menuitemcheckbox'], [role='radio']");
multiOptionFields.forEach(function(option) {
var formTitle = option.closest("div[role='listitem']").querySelector("div[role='heading']").firstChild.textContent;
var answer = formData[formTitle.trim()];
if (answer && option.textContent.trim() === answer) {
option.click();
}
});
});
}
window.onload = FillGoogleForms;