-
Notifications
You must be signed in to change notification settings - Fork 0
/
code.js
115 lines (105 loc) · 3.28 KB
/
code.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
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
115
// Kör funktionen initialize() minst en gång för att lägga till trigger
function initialize() {
var triggers = ScriptApp.getProjectTriggers();
for (var i in triggers) {
ScriptApp.deleteTrigger(triggers[i]);
}
ScriptApp.newTrigger("submitFormToFileMaker")
.forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet())
.onFormSubmit()
.create();
}
function submitFormToFileMaker(e) {
// FileMaker-databas
var fmConnection = {
"database": "https://SERVERADRESS/fmi/data/v1/databases/DATABASNAMN",
"layout": "LAYOUTNAMN",
"account": "KONTONAMN",
"password": "LÖSENORD"
};
// Översättning till fältnamnen i FileMaker-databasen
var fmFields = {
// "Google Form Name": "FileMaker Field Name"
"Namn": "Namn",
"E-postadress": "Epost",
"Tidstämpel": "Google tid"
};
// Hämta formulärdata, logga in, skicka uppgifter och logga ut
var googleFormData = getGoogleFormData (e);
var fmFormData = prepareGoogleFormData (googleFormData,fmFields);
var fmDataToken = login (fmConnection);
createRecord (fmConnection,fmFormData,fmDataToken);
logout(fmConnection,fmDataToken);
// Functions
function login (fmConnection) {
var url = fmConnection.database + "/sessions";
var headers =
{
"Authorization" : "Basic " + Utilities.base64Encode (fmConnection.account + ":" + fmConnection.password),
"Content-Type": "application/json",
};
var data = {};
var payload = JSON.stringify(data);
var options =
{
"method": "POST",
"headers": headers,
"payload": payload
};
var response = UrlFetchApp.fetch (url,options);
var dataAll = JSON.parse (response.getContentText());
fmDataToken = dataAll.response.token;
return fmDataToken;
}
function createRecord (fmConnection,recordData,fmDataToken) {
var url = fmConnection.database + "/layouts/" + fmConnection.layout + "/records";
var headers =
{
"Content-Type": "application/json",
"Authorization": "Bearer " + fmDataToken
};
var data =
{
"fieldData": recordData
};
var payload = JSON.stringify (data);
var options =
{
"method": "POST",
"headers": headers,
"payload": payload
}
var response = UrlFetchApp.fetch (url,options);
return response;
}
function logout (fmConnection,fmDataToken) {
var url = fmConnection.database + "/sessions/" + fmDataToken;
var headers =
{
"Content-Type": "application/json"
};
var options =
{
"method": "DELETE",
"headers": headers,
};
var response = UrlFetchApp.fetch (url,options);
return response;
}
function getGoogleFormData (e) {
if (typeof e === "undefined" || !e) {
// debug, sätt in dummy-värden
e = {namedValues: {"E-postadress": ["[email protected]"], "Namn" : ["Rolf"]}};
}
return e;
}
function prepareGoogleFormData (e,fmFields) {
var fieldData = {};
for (var k in e.namedValues) {
if (fmFields[k] != undefined) {
fieldData[fmFields[k]] = e.namedValues[k][0];
}
}
return fieldData;
}
}