|
function testNewItemPost() { |
|
var request = { |
|
parameters: { |
|
token: "[]", |
|
user_name: "michelle", |
|
text: "add: Rural America; Hillbilly Elegy; J.D. Vance; From a former marine and Yale Law School graduate, a powerful account of growing up in a poor Rust Belt town that offers a broader, probing look at the struggles of America’s white working class; https://www.amazon.com/gp/product/0062300547/ref=pd_bxgy_14_2?ie=UTF8&pd_rd_i=0062300547&pd_rd_r=MG2AV2PZZVEXNYZ1Y84V&pd_rd_w=xCKNl&pd_rd_wg=55Iya&psc=1&refRID=MG2AV2PZZVEXNYZ1Y84V;" |
|
} |
|
}; |
|
doPost(request); |
|
} |
|
|
|
function testListTopics() { |
|
var request = { |
|
parameters: { |
|
token: "[]", |
|
user_name: "michelle", |
|
text: "List topics" |
|
} |
|
}; |
|
doPost(request); |
|
} |
|
|
|
function doPost(request) { |
|
Logger.log("request" + request.parameters.text); |
|
|
|
var params = request.parameters; |
|
|
|
// Make sure that the request came from our slack integration. |
|
if (params.token == "[]") { |
|
|
|
// Get the spreadsheet |
|
var sheets = SpreadsheetApp.openById('[]'); |
|
|
|
// Check command name. If it starts with add, then add to sheet, if it's list topics, then respond with list of topics. |
|
var text = String(params.text); |
|
if (text.match(/^add:/i)) { |
|
addNewItemToSheet(sheets, params); |
|
} else if (text.match(/^list topics/i)) { |
|
listSheetNames(sheets, params.channel_name) |
|
} |
|
|
|
// If the token does not match then do nothing |
|
} else { |
|
return; |
|
} |
|
} |
|
|
|
function addNewItemToSheet(sheets, params) { |
|
// PROCESS TEXT FROM MESSAGE |
|
var textRaw = String(params.text).replace(/^\s*add\s*:*\s*/gi,''); |
|
var text = textRaw.split(/\s*;\s*/g); |
|
|
|
// FALL BACK TO DEFAULT TEXT IF NO UPDATE PROVIDED |
|
var sheetName = text[0] || ""; |
|
var title = text[1] || ""; |
|
var author = text[2] || ""; |
|
var description = text[3] || ""; |
|
var link = (text[4] || "").replace("<", ""); |
|
|
|
var sheet = sheets.getSheetByName(sheetName) |
|
var nR = getNextRow(sheet) + 1; |
|
|
|
// RECORD USER NAME IN SPREADSHEET |
|
sheet.getRange('E:E').getCell(nR,1).setValue(params.user_name); |
|
|
|
// RECORD UPDATE INFORMATION INTO SPREADSHEET |
|
sheet.getRange('A:A').getCell(nR,1).setValue(title); |
|
sheet.getRange('B:B').getCell(nR,1).setValue(author); |
|
sheet.getRange('C:C').getCell(nR,1).setValue(description); |
|
sheet.getRange('D:D').getCell(nR,1).setValue('=HYPERLINK("' + link + '", "Link")'); |
|
|
|
var channel = "reading-list"; |
|
|
|
postResponse(channel,params.user_name, sheetName, title, author, description, link); |
|
} |
|
|
|
function listSheetNames(sheets, channelName) { |
|
var sheetNames = sheets.getSheets().map(function(sheet) { return sheet.getName() }); |
|
postTopicNamesResponse(channelName, sheetNames.slice(1)); |
|
} |
|
|
|
function getNextRow(sheet) { |
|
var titles = sheet.getRange("A:A").getValues(); |
|
for (i in titles) { |
|
if(titles[i][0] == "") { |
|
return Number(i); |
|
break; |
|
} |
|
} |
|
} |