Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Dieses Skript trägt die aktuellsten Follower- & Profil-Views Zahlen
- * von mir und Guido in ein Google Spreadsheet. Da Google es nicht hinkriegt
- * die Views in die Google Peoples API zu verpacken, muss ich den Umweg über
- * meinen Webserver gehen, da der Inhalt der Google+ Seite "länger" ist, als
- * das ihn Apps Script aufnehmen geschweige denn verarbeiten kann.
- * Autor: Philipp "Phip" Schuster / phip1611
- * Website: http://phip1611.de
- */
- var GOOGLE_API_URL = "https://www.googleapis.com/plus/v1/people/",
- GOOGLE_API_KEY = "***",
- GOOGLE_API_URL_PARAMS = "?fields=circledByCount&key="+GOOGLE_API_KEY,
- PHIP1611DE_URL = "http://*.phip1611.de/*",
- PHIP1611DE_API_KEY = "***";
- var activeRow, // aktive Zeile in der Tabelle in die geschrieben wird
- activeRange,
- sheet, // aktives sheet
- date,
- pos = { // die Positionen der Spalten in der Range
- /* In der Tabelle ist abgespeichert, wieviele Einträge vorhanden sind
- * als Indikator für die aktive Zeile */
- "numberOfEntries" : {
- "row" : 1,
- "column": 14
- },
- "date" : {
- "column": 1
- },
- "phip": {
- "views" : {
- "column" : 3
- },
- "followers" : {
- "column" : 4
- },
- /* Hier werden dann die Wachstumszahlen eingetragen
- * für die Follower und Profil-Views */
- "growth" : {
- "views" : {
- "column" : 2
- },
- "followers" : {
- "column" : 5
- },
- }
- },
- "guido": {
- "views" : {
- "column" : 9
- },
- "followers" : {
- "column" : 10
- },
- /* Hier werden dann die Wachstumszahlen eingetragen
- * für die Follower und Profil-Views */
- "growth" : {
- "views" : {
- "column" : 8
- },
- "followers" : {
- "column" : 11
- },
- }
- },
- /* Hier werden die Vergleichsoperatoren eingetragen
- * für die Follower und Profil-Views der beiden Accounts */
- "comparisonOperators" : {
- "views" : {
- "column" : 6
- },
- "followers" : {
- "column" : 7
- }
- }
- },
- googleProfiles = {
- "phip" : {
- "ID" : "***",
- "views" : 0,
- "followers" : 0
- },
- "guido" : {
- "ID" : "***",
- "views" : 0,
- "followers" : 0
- }
- };
- /*****************/
- // Wird täglich getriggert aufgerufen
- function init() {
- //sheet = SpreadsheetApp.getActiveSheet();
- sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
- run();
- };
- var run = function() {
- setFormattedDate();
- getProfileViews();
- getFollowers();
- getNumberOfEntries();
- writeStatsInSheet();
- calcDifferences();
- setComparisonOperators();
- writeStatsInSheetFour(); // Daten in Tabellenblatt 4 für die Diagramme
- increaseNumberOfEntries();
- };
- // Holt die aktuelle Anzahl der Profil-Aufrufe
- var getProfileViews = function() {
- var postParam = {
- "key" : PHIP1611DE_API_KEY
- };
- var options = {
- "method" : "post",
- "payload" : postParam
- };
- var responseJSON = JSON.parse(UrlFetchApp.fetch(
- PHIP1611DE_URL, options
- ).toString());
- googleProfiles.phip.views = responseJSON.phip;
- googleProfiles.guido.views = responseJSON.guido;
- };
- // Holt die Anzahl der aktuellen Follower
- var getFollowers = function() {
- googleProfiles.phip.followers = JSON.parse(
- UrlFetchApp.fetch(
- GOOGLE_API_URL
- + googleProfiles.phip.ID
- + GOOGLE_API_URL_PARAMS
- ).toString()
- ).circledByCount;
- googleProfiles.guido.followers = JSON.parse(
- UrlFetchApp.fetch(
- GOOGLE_API_URL
- + googleProfiles.guido.ID
- + GOOGLE_API_URL_PARAMS
- ).toString()
- ).circledByCount;
- };
- // bestimmt die aktive Zeile im Sheet
- var getNumberOfEntries = function() {
- activeRow = 3 + sheet.getRange(
- pos.numberOfEntries.row, pos.numberOfEntries.column
- ).getCell(1, 1).getValue();
- };
- var setFormattedDate = function() {
- // Danke an Michael L. für den Hinweis auf Utilities.formatDate()!
- date = Utilities.formatDate(new Date(), "GMT+2", "yyyy-MM-dd");
- /* Meine alte Code-Version
- var dateObj = new Date();
- dateObj = new Date();
- date = dateObj.getUTCFullYear()+"-";
- if ((dateObj.getUTCMonth()+1) < 10 ) { // +1, da .getUTCMonth() Ergebnisse [0; 11] liefert
- date = date + "0" + (dateObj.getUTCMonth()+1); // +1, da .getUTCMonth() Ergebnisse [0; 11] liefert
- } else {
- date = date + dateObj.getUTCMonth()+1;
- }
- date = date+"-";
- if ((dateObj.getUTCDate()) < 10 ) {
- date = date + "0" + dateObj.getUTCDate();
- } else {
- date = date + dateObj.getUTCDate();
- }
- */
- };
- // Schreibt Datum + aktuelle Werte für Follower und Views in die aktuelle Tabellenzeile
- var writeStatsInSheet = function() {
- activeRange = sheet.getRange(activeRow, 1, 1, 11);
- activeRange.getCell(1, pos.date.column)
- .setValue("'"+date);
- activeRange.getCell(1, pos.phip.views.column)
- .setValue(googleProfiles.phip.views);
- activeRange.getCell(1, pos.guido.views.column)
- .setValue(googleProfiles.guido.views);
- activeRange.getCell(1, pos.phip.followers.column)
- .setValue(googleProfiles.phip.followers);
- activeRange.getCell(1, pos.guido.followers.column)
- .setValue(googleProfiles.guido.followers);
- };
- // Berechnet die Differenz der Veränderung der Views und Follower im Vergleich zum vorherigen Wert
- var calcDifferences = function() {
- var activeRange = sheet.getRange(activeRow-1, 1, 2, 11);
- if (activeRow > 3) { // erst wenn mindestens ein eintrag
- activeRange.getCell(2, pos.phip.growth.views.column)
- .setValue(
- googleProfiles.phip.views
- - activeRange.getCell(
- 1, pos.phip.views.column
- ).getValue()
- );
- activeRange.getCell(2, pos.guido.growth.views.column)
- .setValue(
- googleProfiles.guido.views
- - activeRange.getCell(
- 1, pos.guido.views.column
- ).getValue()
- );
- activeRange.getCell(2, pos.phip.growth.followers.column)
- .setValue(
- googleProfiles.phip.followers
- - activeRange.getCell(
- 1, pos.phip.followers.column
- ).getValue()
- );
- activeRange.getCell(2, pos.guido.growth.followers.column)
- .setValue(
- googleProfiles.guido.followers
- - activeRange.getCell(
- 1, pos.guido.followers.column
- ).getValue()
- );
- } else {
- activeRange.getCell(2, pos.phip.growth.views.column)
- .setValue(0);
- activeRange.getCell(2, pos.guido.growth.views.column)
- .setValue(0);
- activeRange.getCell(2, pos.phip.growth.followers.column)
- .setValue(0);
- activeRange.getCell(2, pos.guido.growth.followers.column)
- .setValue(0);
- }
- };
- // Setzt Vergleichsoperatoren
- var setComparisonOperators = function() {
- var activeRange = sheet.getRange(activeRow, 1, 1, 11);
- if (googleProfiles.phip.views > googleProfiles.guido.views) {
- activeRange.getCell(
- 1, pos.comparisonOperators.views.column
- ).setValue(">");
- } else if (googleProfiles.phip.views < googleProfiles.guido.views) {
- activeRange.getCell(
- 1, pos.comparisonOperators.views.column
- ).setValue("<");
- } else {
- activeRange.getCell(
- 1, pos.comparisonOperators.views.column
- ).setValue("'=");
- }
- if (googleProfiles.phip.followers > googleProfiles.guido.followers) {
- activeRange.getCell(
- 1, pos.comparisonOperators.followers.column
- ).setValue(">");
- } else if (googleProfiles.phip.followers < googleProfiles.guido.followers) {
- activeRange.getCell(
- 1, pos.comparisonOperators.followers.column
- ).setValue("<");
- } else {
- activeRange.getCell(
- 1, pos.comparisonOperators.followers.column
- ).setValue("'=");
- }
- };
- // zählt Zähler für Einträge nach oben
- var increaseNumberOfEntries = function() {
- sheet.getRange(
- pos.numberOfEntries.row, pos.numberOfEntries.column
- ).getCell(1, 1)
- .setValue(activeRow-2)
- };
- // In Tabellenblatt 4 sind die Daten in einer Form, wie sie die Diagramme einfach aufnehmen können
- var writeStatsInSheetFour = function() {
- var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[3]; // Tabellenblatt 4 mit Log-Daten für Diagramme
- activeRange = sheet.getRange(activeRow-2, 1, 1, 8);
- activeRange.getCell(1, 1).setValue(date);
- activeRange.getCell(1, 1)
- .setValue("'"+date);
- activeRange.getCell(1, 6)
- .setValue("'"+date);
- activeRange.getCell(1, 2)
- .setValue(googleProfiles.phip.views);
- activeRange.getCell(1, 3)
- .setValue(googleProfiles.guido.views);
- activeRange.getCell(1, 7)
- .setValue(googleProfiles.phip.followers);
- activeRange.getCell(1, 8)
- .setValue(googleProfiles.guido.followers);
- };
- function onOpen() {
- var entries = [{
- name : "Manuell Aktualisieren!",
- functionName : "init"
- }];
- SpreadsheetApp.getActiveSpreadsheet().addMenu("Script Center Menü", entries);
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement