This repository was archived by the owner on Aug 21, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathProcessJavaScript.html
More file actions
114 lines (101 loc) · 3.99 KB
/
ProcessJavaScript.html
File metadata and controls
114 lines (101 loc) · 3.99 KB
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<script>
(function() {
var limit = data.limit;
var accountId = data.accountId;
var propertyId = data.propertyId;
var current = document.querySelector('#current');
var oldName = document.querySelector('#oldName');
var newName = document.querySelector('#newName');
var oldScope = document.querySelector('#oldScope');
var newScope = document.querySelector('#newScope');
var oldActive = document.querySelector('#oldActive');
var newActive = document.querySelector('#newActive');
var oldType = document.querySelector('#oldType');
var newType = document.querySelector('#newType');
var update = document.querySelector('#update');
var skip = document.querySelector('#skip');
var close = document.querySelector('#close');
var warning = document.querySelector('#warning');
var metrics = data.metrics;
var sourceData = data.sourceData;
var i, newI, oMet, nMet;
var disableButtons = function() {
update.setAttribute('disabled', '');
skip.setAttribute('disabled', '');
};
var enableButtons = function() {
update.removeAttribute('disabled');
skip.removeAttribute('disabled');
};
var showError = function(e) {
warning.className = 'block error';
warning.innerHTML = e.message;
close.innerHTML = 'Close';
};
var isSame = function(oMet, nMet) {
return oMet.name === nMet.name &&
oMet.scope === nMet.scope &&
oMet.type === nMet.type &&
oMet.active.toString() === nMet.active.toString();
};
var run = function(i) {
var updateMetric, skipMetric, checkClose;
oMet = metrics.items[i];
nMet = sourceData[i];
newI = i + 1;
current.setAttribute('data-value', newI);
current.innerHTML = newI;
oldName.innerHTML = oMet && oMet.name || '-';
oldScope.innerHTML = oMet && oMet.scope || '-';
oldType.innerHTM = oMet && oMet.type || '-';
oldActive.innerHTML = oMet && (oMet.active || oMet.active === false) ? oMet.active : '-';
newName.innerHTML = nMet.name;
newScope.innerHTML = nMet.scope;
newType.innerHTM = nMet.type;
newActive.innerHTML = nMet.active;
checkClose = function() {
if (newI < limit) {
run(newI);
} else {
close.innerHTML = 'Close';
warning.className = 'block';
warning.innerHTML = 'All done! You can close this dialog now.';
}
};
updateMetric = function() {
update.removeEventListener('click', updateMetric);
skip.removeEventListener('click', skipMetric);
disableButtons();
warning.className = 'block';
warning.innerHTML = 'Updating metric...';
google.script.run.withFailureHandler(showError).withSuccessHandler(checkClose).updateMetric('update', accountId, propertyId, newI, nMet);
};
skipMetric = function() {
update.removeEventListener('click', updateMetric);
skip.removeEventListener('click', skipMetric);
disableButtons();
checkClose();
};
if (oMet && isSame(oMet, nMet)) {
warning.className = 'block';
warning.innerHTML = 'Skipping metric...';
window.setTimeout(skipMetric, 100);
} else if (oMet) {
enableButtons();
warning.className = 'block error';
warning.innerHTML = 'metric already populated. UPDATE to get value from sheet, or SKIP to keep original value.';
update.addEventListener('click', updateMetric);
skip.addEventListener('click', skipMetric);
} else {
warning.innerHTML = 'Creating metric...';
warning.className = 'block';
disableButtons();
google.script.run.withFailureHandler(showError).withSuccessHandler(checkClose).updateMetric('create', accountId, propertyId, newI, nMet);
}
};
run(0);
close.addEventListener('click', function() {
google.script.host.close();
});
})();
</script>