Skip to content

Instantly share code, notes, and snippets.

@samsoft00
Last active November 26, 2024 12:49
Show Gist options
  • Save samsoft00/4f0ef8193340e7e0ddbc1ce3b1f01ae4 to your computer and use it in GitHub Desktop.
Save samsoft00/4f0ef8193340e7e0ddbc1ce3b1f01ae4 to your computer and use it in GitHub Desktop.
App Script to identify news publishers on various social media platforms
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