Quantcast
Channel: Banedon's Cyber-Junk » Script Editor
Viewing all articles
Browse latest Browse all 2

Einen WebCron mit Google Docs bauen

$
0
0

Cronjobs, also regelmäßig ausgeführte Befehle, sind eine feine Sache. Manche Webanwendungen wollen zum Beispiel pro Tag den Aufruf einer bestimmten URL. Für WordPress ist es praktisch, wenn man die wp-cron.php regelmäßig aufgerufen bekommt um Probleme mit dem zeitversetzten Veröffentlichen von Beiträgen zu verhindern.

Die Anforderungen, die ich persönlich an einen WebCron habe sind einfach:

  • Aufruf einer URL stündlich oder täglich
  • Benachrichtigung bei Fehlern
  • Möglichst kostenlos
Mittels der Scripte von Google-Docs kann mit nur wenigen Handgriffen diese Anforderungen erfüllen. Zunächst eine Kopie meiner Vorlage erstellen. Die Tabellen sind dabei sehr einfach strukturiert. In der ersten Spalte sind die URLs die aufgerufen werden sollen; die Tabellen selbst dient der Unterscheidung zwischen stündlichen und täglichen Aufrufen.
Die "Intelligenz" steckt im Script, welches man mittels "Tools"->"Script Editor" einsehen kann.

/**
  * Snippet zum durchführen eines simulierten Crons per
  * Google Docs - Triggers
  * 
  * Autor: Thorsten Zoerner (me@thorsten-zoerner.com)
  **/</p>

<p>function cronStündlich() {
   fetchURLs(&quot;Stündlich&quot;);
}</p>

<p>function cronTäglich() {
   fetchURLs(&quot;Täglich&quot;);
}</p>

<p>function fetchURLs(sheetname) {
   var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetname);
   /* Ab  der zweiten Zeile gehen wir alle Zeilen durch, bis wir zur ersten leeren Zeile kommen */
   var row=2;
   var errors=0;
  while(sheet.getRange(row,1).getValue()!=&quot;&quot;) {</p>

<pre><code>var url=sheet.getRange(row,1).getValue();
var response=null;
try {
var response = UrlFetchApp.fetch(url);    
sheet.getRange(row,2).setValue(new Date());
sheet.getRange(row,3).setValue(response.getResponseCode());
} catch(e) {
  sheet.getRange(row,4).setValue(new Date());
  sheet.getRange(row,5).setValue( (&amp;quot;&amp;quot;+e+&amp;quot;&amp;quot;).substring(0,100)+&amp;quot;...&amp;quot;);
  errors++;
}
//Browser.msgBox(url);
row++;
</code></pre>

<p>}
  if(errors&gt;0) {
        throw &quot;Fehler beim Aufruf von &quot;+errors+&quot; Seiten bei &quot;+sheetname;
  }
}

Als letztes müssen die Trigger eingerichtet werden, dies geschieht im Script Editor, wo man mit "Triggers"=>"Trigger dieses Scriptes" die entsprechenden Funktionen (cronStündlich & cronTäglich ) aufrufen kann und die Benachrichtigung per E-Mail festlegt.

 Mehr...

    None Found

No related posts.


Viewing all articles
Browse latest Browse all 2

Latest Images

Trending Articles



Latest Images