Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var messageArray = []
- function chartToImage()
- {
- var slides = SlidesApp.create("temp");
- var slideDeleted = false;
- var startTime = new Date().getTime();
- var today = new Date();
- var todayString = today.getDate() + "-" + today.getMonth()
- var creationDate = new Date('August 15, 2016 GMT+10:00');
- var creationString= creationDate.getDate() + "-" + creationDate.getMonth()
- var anniversary = ""
- Logger.log(Duration(startTime)[0] + "Today's date is " + (today.getDate() + "-" + today.getMonth()))
- Logger.log(Duration(startTime)[0] + "Creation date is " + (creationDate.getDate() + "-" + creationDate.getMonth()))
- if(todayString == creationString || todayString == "31-11")
- {
- if(todayString == "31-12")
- {
- Logger.log(Duration(startTime)[0] + "It's A New Year!")
- var anniversary = "\n***HAPPY NEW YEARS!***"
- }
- else if(todayString == creationString)
- {
- var year = getNumberWithOrdinal(Math.floor(((today / 86400000) - (creationDate / 86400000)) / 365))
- Logger.log(Duration(startTime)[0] + "It's our " + year + " anniversary!")
- var anniversary = "\n***HAPPY " + year + " ANNIVERSARY!***"
- }
- }
- var properties = PropertiesService.getScriptProperties()
- var discordUrl = "REMOVED";
- var urlQueries = "?thread_id=905517563616849950&wait=true";
- var files = DriveApp.getFolderById("1GDylzA3ibQVRHuqx7VpLs_BY1UVlD9_v").getFiles()
- var spreadsheets = []
- var images = []
- try
- {
- while(files.hasNext())
- {
- var file = files.next()
- Logger.log(Duration(startTime)[0] + "Fetching File ID")
- var fileID = file.getId()
- Logger.log(Duration(startTime)[0] + "File ID Fetched")
- Logger.log(Duration(startTime)[0] + "Opening " + file.getName())
- spreadsheets.push(SpreadsheetApp.openById(fileID))
- Logger.log(Duration(startTime)[0] + file.getName() + " Opened")
- if (Duration(startTime)[1] >= 120)
- {
- throw("Opening spreadsheet has taken too long! Restarting")
- }
- }
- spreadsheets.sort((a, b) => a.getId() > b.getId() && 1 || -1)
- Logger.log(Duration(startTime)[0] + "Spreadsheets Sorted")
- for (var i = 0; i < spreadsheets.length;)
- {
- Logger.log(Duration(startTime)[0] + "Grabbing Charts From " + spreadsheets[i].getName())
- var charts = spreadsheets[i].getSheets()[0].getCharts()
- Logger.log(Duration(startTime)[0] + spreadsheets[i].getName() +": Charts Fetched")
- charts.sort((a, b) => a.getContainerInfo().getAnchorRow() > b.getContainerInfo().getAnchorRow() && 1 || -1)
- Logger.log(Duration(startTime)[0] + spreadsheets[i].getName() +": Sorted Charts")
- for (var j = 0; j < charts.length;)
- {
- charts.push(slides.getSlides()[0].insertSheetsChartAsImage(charts.shift()).getAs("image/png"))
- Logger.log(Duration(startTime)[0] + spreadsheets[i].getName() + ": Chart Pushed, " + (charts.length - j) + " Remaining")
- j++
- }
- images.push(charts)
- i++
- }
- DriveApp.getFileById(slides.getId()).setTrashed(true);
- var slideDeleted = true;
- Logger.log(Duration(startTime)[0] + "Chart Cache Deleted")
- if(properties.getProperty("messageIDArray") != null)
- {
- Logger.log(Duration(startTime)[0] + "Deleting Messages")
- deleteMessages(JSON.parse(properties.getProperty("messageIDArray")), discordUrl, "?wait=true&thread_id=905517563616849950")
- Logger.log(Duration(startTime)[0] + "Messages Deleted")
- }
- sendMessage("***__Server Statistics, <t:" + Math.floor((new Date().getTime()/1000)).toString() + ":F>__***" + anniversary, discordUrl, urlQueries, false, false)
- Logger.log(Duration(startTime)[0] + "Starting Message Sent")
- for (var i = 0; i < spreadsheets.length;)
- {
- var messageId = sendMessage("***" + spreadsheets[i].getName() + "***", discordUrl, urlQueries, images[i], false, startTime)
- i++
- }
- var endMessage = "You can view the server data here: https://drive.google.com/drive/folders/19n_9hC4Odc-q4aoSIB4IbwivSviMVaDt \nGive me some feedback here!: https://forms.gle/WzuYpaJ22VRSvJY38 \nCreated by <@221459835315683330>"
- sendMessage(endMessage, discordUrl, urlQueries, false, false)
- Logger.log(Duration(startTime)[0] + "All Messages Sent")
- properties.setProperty("messageIDArray", JSON.stringify(messageArray))
- //ScriptApp.newTrigger("channelChartToImage").timeBased().at(new Date(new Date().getTime() + 60000)).create()
- }
- catch(error)
- {
- Logger.log(Duration(startTime)[0] + "This Script Will Restart Due To An Error In A Minute")
- Logger.log(Duration(startTime)[0] + "Error: " + error)
- ScriptApp.newTrigger("chartToImage").timeBased().at(new Date(new Date().getTime() + 60000)).create()
- if(!slideDeleted)
- {
- DriveApp.getFileById(slides.getId()).setTrashed(true);
- }
- }
- }
- function sendMessage(message, webhookURL, queries, images, thread_name, startTime)
- {
- var payload = {}
- var params = {}
- if(thread_name)
- {
- payload.thread_name = thread_name;
- }
- if(images)
- {
- var attachmentsLimit = 10;
- var iterationsNeeded = Math.floor((images.length - 1) / attachmentsLimit) + 1
- Logger.log(Duration(startTime)[0] + "Image Exists")
- Logger.log(Duration(startTime)[0] + "Starting length is: " + images.length)
- for (var p = 0; p < iterationsNeeded;)
- {
- var payload = {}
- var params = {}
- Logger.log(Duration(startTime)[0] + "Iteration" + (p + 1))
- if(message && p < 1)
- {
- Logger.log(Duration(startTime)[0] + "Message Exists and P < 1")
- payload.content = message;
- }
- for (var k = 0 + (p * 10); k < Math.min(images.length, attachmentsLimit * (p + 1));)
- {
- images[k].setName("Chart" + k + ".png")
- payload[k - (p * 10)] = images[k]
- k++
- Logger.log(Duration(startTime)[0] + "Image length remaining is: " + (images.length - k))
- Logger.log(Duration(startTime)[0] + payload)
- }
- if(thread_name)
- {
- payload.thread_name = thread_name;
- }
- params.payload = payload;
- params.muteHttpExceptions = true;
- params.method = "POST";
- Logger.log(Duration(startTime)[0]+ params)
- while(true)
- {
- var response = UrlFetchApp.fetch(webhookURL + queries, params);
- var responseCode = response.getResponseCode()
- if(responseCode == 429 || responseCode == 429.0)
- {
- var seconds = Math.ceil((JSON.parse(response.getContentText()).retry_after) * 1000) / 1000
- Logger.log(Duration(startTime)[0] + "Got throttled on sending message, waiting " + seconds + " seconds")
- Utilities.sleep(seconds * 1000)
- }
- else
- {
- break;
- }
- }
- Logger.log(Duration(startTime)[0] + "Message Sent")
- messageArray.push(JSON.parse(response.getContentText()).id)
- p++
- }
- }
- else
- {
- payload.content = message;
- params.payload = payload;
- params.muteHttpExceptions = true;
- params.method = "POST";
- var response = UrlFetchApp.fetch(webhookURL + queries, params).getContentText();
- messageArray.push(JSON.parse(response).id)
- }
- return JSON.parse(response).id;
- }
Advertisement
Add Comment
Please, Sign In to add comment