Skip to content

Instantly share code, notes, and snippets.

@oeon oeon/scripts.gs

Created Jan 10, 2019
Embed
What would you like to do?
Google Apps Script for creating Google Calendar events via Fulcrum Webhooks
// Google Apps Script for creating Google Calendar events via Fulcrum Webhooks
// replace your Fulcrum API token here
var token = "";
var createEventId = "";
function doPost(e) {
return handleResponse(e);
}
function handleResponse(e) {
var jsonString = e.postData.getDataAsString();
var payload = JSON.parse(jsonString);
// replace your form id here
var form = "46e2df6b-6e51-4008-ab47-a140ef3694f3";
var record_id = payload.data.id;
// replace your field keys below
var title = payload.data.form_values["7f36"];
var start_unix = parseInt(payload.data.form_values["88bd"]);
var stop_unix = parseInt(payload.data.form_values["1755"]);
var iCalId = payload.data.form_values["d922"];
var startTime = new Date(start_unix);
var stopTime = new Date(stop_unix);
if (payload.data.form_id === form) {
if (payload.type === "record.create") {
createEvent();
updateRecord(record_id, createEventId);
} else if (payload.type === "record.update") {
updateEvent();
} else if (payload.type === "record.delete") {
deleteEvent();
}
}
function createEvent() {
var event = CalendarApp.getDefaultCalendar().createEvent(title, startTime, stopTime, {description: "<a href='https://web.fulcrumapp.com/records/" + record_id + "'>Desktop Link</a><br><a href='https://www.fulcrumapp.com/action/#edit-record?form_id=" + form + "&record_id=" + record_id + "'>Mobile Link</a>"});
createEventId = event.getId();
}
function updateEvent() {
CalendarApp.getEventById(iCalId).setTime(startTime, stopTime).setTitle(title);
}
function deleteEvent() {
CalendarApp.getEventById(iCalId).deleteEvent();
}
// this function will write the Google Calendar EventID back to the Fulcrum record for updating/deleting
function updateRecord(record, event) {
var url = "https://api.fulcrumapp.com/api/v2/records/" + record + ".json";
var data = UrlFetchApp.fetch(url, {
"method": "GET",
"headers": {
"X-ApiToken": token,
"Accept": "application/json"
}
});
var json = JSON.parse(data);
// replace your field key here
json.record.form_values['d922'] = event;
delete json.record.changeset_id;
var update = UrlFetchApp.fetch("https://api.fulcrumapp.com/api/v2/records.json", {
"method": "POST",
"contentType": "application/json",
"payload": JSON.stringify(json),
"headers": {
"X-ApiToken": token,
"Accept": "application/json"
}
});
Logger.log(update);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.