Last active
November 26, 2024 12:49
-
-
Save samsoft00/4f0ef8193340e7e0ddbc1ce3b1f01ae4 to your computer and use it in GitHub Desktop.
App Script to identify news publishers on various social media platforms
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function initMenu() { | |
var ui = SpreadsheetApp.getUi(); | |
var menu = ui.createMenu("News Publisher"); | |
menu.addItem("Search News", "searchPublisher") | |
menu.addSeparator(); | |
var submenu = ui.createMenu("Search Functions"); | |
submenu.addItem("Google", "googleSearch"); | |
submenu.addItem("Telegram", "telegramSearch"); | |
submenu.addItem("Twitter", "twitterSearch"); | |
submenu.addItem("Facebook", "fbSearch"); | |
submenu.addItem("Instagram", "igSearch"); | |
menu.addSubMenu(submenu); | |
menu.addToUi(); | |
} | |
function postRequest(searchTxt, SEARCH_TYPE){ | |
const SEARCH_URL = "https://automation-expert.app.n8n.cloud/webhook-test/262fab8b-c9eb-41b0-a756-b4d0df96969e"; | |
var options = { | |
'method':'post', | |
'contentType':'application/json', | |
'payload' : JSON.stringify({'query' : searchTxt, 'search_type': SEARCH_TYPE}), | |
'muteHttpExceptions': true, | |
'headers': {'Authorization':'ACCESS_TOKEN'}, | |
} | |
try{ | |
var response = UrlFetchApp.fetch(SEARCH_URL, options); | |
var results = JSON.parse(response.getContentText()); | |
return results; | |
}catch(err){ | |
throw err; | |
} | |
} | |
function searchPublisher() { | |
var ui = SpreadsheetApp.getUi(); | |
var input = ui.prompt("Full Search", "Enter your search query.", ui.ButtonSet.OK_CANCEL); | |
// Get Sheet information | |
var activeSpreadSheet = SpreadsheetApp.getActiveSpreadsheet() | |
var activeSheet = activeSpreadSheet.getActiveSheet(); | |
// var sheetId = activeSpreadSheet.getId(); | |
// var sheetName = activeSheet.getName(); | |
var searchTxt = input.getResponseText(); | |
var selectedBtn = input.getSelectedButton(); | |
if(selectedBtn == ui.Button.CANCEL || selectedBtn == ui.Button.CLOSE){ return; } | |
const SEARCH_TYPES = { | |
GOOGLE_SEARCH: "Google", | |
TWITTER_SEARCH: "Twitter", | |
FACEBOOK_SEARCH: "Facebook", | |
IG_SEARCH:"Instagram", | |
TT_SEARCH: "TikTok", | |
TELEGRAM_SEARCH: "Telegram" | |
} | |
try { | |
// Do something simple | |
var results = postRequest(searchTxt, 'FULL_SEARCH'); | |
var aggregatedData = results.map(searchData => { | |
const type = SEARCH_TYPES[searchData.search_type] | |
return [ | |
searchData.title, | |
searchData.source, | |
type, | |
searchData.source_url, | |
searchData.link, | |
searchData.publish_date | |
] | |
}); | |
// clear existing data, keeping the header row. | |
var lastRow = activeSheet.getLastRow(); | |
if(lastRow > 1) { | |
activeSheet.getRange(2, 1, lastRow - 1, activeSheet.getLastColumn()).clear(); | |
} | |
Logger.log(aggregatedData); | |
// Insert the aggregated data | |
if(aggregatedData.length > 0) { | |
activeSheet.getRange(2, 1, aggregatedData.length, 6).setValues(aggregatedData); | |
} | |
//activeSheet.autoResizeColumns(1, 6); | |
SpreadsheetApp.getUi().alert('Data refresh completed!'); | |
} catch(err){ | |
Logger.log(err); | |
} | |
} | |
/** | |
* Google Search | |
*/ | |
function googleSearch(){ | |
const SEARCH_TYPE = "GOOGLE_SEARCH"; | |
} | |
/** | |
* Telegram Search | |
*/ | |
function telegramSearch() { | |
const SEARCH_TYPE = "TELEGRAM_SEARCH"; | |
} | |
/** | |
* Twitter Search | |
*/ | |
function twitterSearch(){ | |
const SEARCH_TYPE = "TWITTER_SEARCH"; | |
} | |
/** | |
* Facebook Search | |
*/ | |
function fbSearch(){ | |
const SEARCH_TYPE = "FACEBOOK_SEARCH"; | |
} | |
/** | |
* Instagram Search | |
*/ | |
function igSearch(){ | |
const SEARCH_TYPE = "IG_SEARCH"; | |
} | |
/** | |
* Instagram Search | |
*/ | |
function ttSearch(){ | |
const SEARCH_TYPE = "TT_SEARCH"; | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment