-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathOutputFile.gs
79 lines (61 loc) · 2.7 KB
/
OutputFile.gs
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
// Google Apps Script to process data sent to Google Sheets from the Contribution form on https://kindly.unicef.io/contribute
// If contributing, ask admin for `SpreadsheetId`, `IntakeSheet`, `OutputSheet` and `CounterCell`
// example: `e = {parameter:{"text": "You suck", "intent": "yes", "row": 'undefined'}}`
var scriptProp = PropertiesService.getScriptProperties()
var sheetID = "GOOGLE SHEET ID HERE"
function intialSetup () {
var activeSpreadsheet = SpreadsheetApp.openById(sheetID)
scriptProp.setProperty('key', activeSpreadsheet.getId())
}
function doGet() {
return ContentService.createTextOutput('Kindly Data Intake Script!');
}
function doPost (e) {
//var lock = LockService.getDocumentLock()
//lock.tryLock(10000)
console.log(e)
try {
var doc = SpreadsheetApp.openById(sheetID)
var sheet = doc.getSheetByName("INTAKE SHEET NAME HERE")
console.log('Debug statement')
var nextRow = sheet.getLastRow() + 1
// cell with counter to keep track of number of new contributions (resets once review email has been sent)
var dropdownRule = SpreadsheetApp.newDataValidation().requireValueInList(['yes', 'no', 'maybe'], true).build()
// rule to create data validation for dropdown yes/no/maybe for bullying detected
var counterCell = sheet.getRange("COUNTER CELL HERE")
var counterValue = counterCell.getValue()
var counter = 20
var date = new Date();
var newRow = [date, e.parameter["text"], e.parameter["intent"], e.parameter["prompt"]]
// Updating row if row number is present in the payload, elase append new row
if(e.parameter['row']){
console.log('row is present')
sheet.getRange(e.parameter['row'], 1, 1, newRow.length).setValues([newRow]);
}
else{
//Appends the data to the sheet as a new entry
sheet.appendRow(newRow);
// adds data validation cell to row with dropdownRule
sheet.getRange(nextRow, 3).setDataValidation(dropdownRule);
// adds checkbox for reviewed column
sheet.getRange(nextRow, 5).insertCheckboxes();
}
// Increments the counter by one for each new row added
counterCell.setValue(counterValue + 1);
// if the counterValue hits the specified amount, triggers reviewAlert() which sends an email and resets the counter
if(counterValue >= counter){
reviewAlert()
}
return ContentService
.createTextOutput(JSON.stringify({ 'result': 'success', 'row': nextRow }))
.setMimeType(ContentService.MimeType.JSON)
}
catch (e) {
return ContentService
.createTextOutput(JSON.stringify({ 'result': 'error', 'error': e, 'test':true }))
.setMimeType(ContentService.MimeType.JSON)
}
finally {
//lock.releaseLock()
}
}