So sendest du eine SMS-Nachricht aus einer Google-Tabelle

February 26, 2016
Autor:in:

So sendest du eine SMS-Nachricht aus einer Google-Tabelle


Hallo und Danke fürs Lesen! Dieser Blogpost ist eine Übersetzung von How to Send SMS from a Google Spreadsheet. Während wir unsere Übersetzungsprozesse verbessern, würden wir uns über Dein Feedback an help@twilio.com freuen, solltest Du etwas bemerken, was falsch übersetzt wurde. Wir bedanken uns für hilfreiche Beiträge mit Twilio Swag :)

Google Sheets wird zusammen mit einer JavaScript-basierten Sprache bereitgestellt, die Apps Script heißt. In diesem Tutorial verwenden wir Apps Script zum Senden von SMS-Nachrichten an Telefonnummern, die in einer Google-Tabelle gespeichert sind. Die Schritte dauern weniger als zehn Minuten bis zur Fertigstellung – auch wenn du noch nie eine Zeile Code geschrieben hast.

Das könnte dich auch interessieren: So bereinigst und validierst du Telefonnummern in einer Google-Tabelle. Mit diesem Tutorial kannst du herausfinden, welche Telefonnummern in deiner Tabelle eine SMS-Nachricht empfangen können, bevor du versuchst, sie zu senden.

Die Twilio-Bits

Du benötigst ein kostenloses Twilio-Konto. Wenn du noch keins hast, kannst du dich hier für eines anmelden. Du kannst alles in diesem Tutorial mit einem Testkonto ausführen. Die einzige Einschränkung ist, dass du SMS-Nachrichten nur an dein Mobiltelefon senden kannst. (Wenn du dein Konto upgradest, erhältst du für 20 US-Dollar etwa 2.500 SMS-Nachrichten in den USA. Die vollständige SMS-Preisliste findest du hier).

Sobald du ein Twilio-Konto hast, kannst du eine SMS-fähige Twilio-Telefonnummer kaufen. Dann geh zu deinem programmierbaren SMS-Dashboard und klicke auf API-Anmeldeinformationen anzeigen.

show-credentials

Halte deine Telefonnummer und Anmeldeinformationen bereit. Wir werden sie gleich in unseren Code einfügen.

Die Google-Bits

Geh zu deinem Google Drive und erstelle eine neue Tabelle. Erstelle Spaltenüberschriften für:

  • Telefonnummer
  • Nachrichtentext
  • Status

Füge zwei Zeilen mit einer Telefonnummer und einem Nachrichtentext hinzu. Stelle deiner Telefonnummer ein ' (geraden Apostroph) voran, um der Tabelle mitzuteilen, dass es sich bei der Zelle um eine Zeichenfolge handelt (du kannst die Spalte auch als „Nur Text“ formatieren). Um zu vermeiden, dass Freunde und Familie Spam erhalten, kannst du deine Handynummer zweimal verwenden. Lass die Statuszeile leer.

Telefonnummern

Mit unseren Daten sind wir jetzt bereit, Code zu schreiben. Klicke auf Tools -> Script Editor.

script-editor

Der Rest dieses Beitrags führt dich durch den Code, um SMS-Nachrichten aus der Tabelle zu senden. Wenn du der Typ bist, der gern zum Ende des Krimis vorspult – oder einfach keine Zeit für all diese Lerninhalte hast –, findest du hier das Endprodukt (beachte die Platzhalter für Konto-SID, Authentifizierungstoken und Twilio-Telefonnummer):

function sendSms(to, body) {
  var messages_url = "https://api.twilio.com/2010-04-01/Accounts/YOURACCOUNTSID/Messages.json";

  var payload = {
    "To": to,
    "Body" : body,
    "From" : "YOURTWILIONUMBER"
  };

  var options = {
    "method" : "post",
    "payload" : payload
  };

  options.headers = { 
    "Authorization" : "Basic " + Utilities.base64Encode("YOURACCOUNTSID:YOURAUTHTOKEN")
  };

  UrlFetchApp.fetch(messages_url, options);
}

function sendAll() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2; 
  var numRows = sheet.getLastRow() - 1; 
  var dataRange = sheet.getRange(startRow, 1, numRows, 2) 
  var data = dataRange.getValues();

  for (i in data) {
    var row = data[i];
    try {
      response_data = sendSms(row[0], row[1]);
      status = "sent";
    } catch(err) {
      Logger.log(err);
      status = "error";
    }
    sheet.getRange(startRow + Number(i), 3).setValue(status);
  }
}

function myFunction() {
  sendAll();
}

Wenn du sehen möchtest, wie wir zu diesem Ergebnis gekommen sind, fahre fort.

Senden einer SMS aus dem App-Skript

Wir werden diesen Code in zwei Schritten schreiben:

  1. Schreibe eine sendSms-Funktion, um eine einzelne SMS zu senden.
  2. Schreibe eine sendAll-Funktion, um sendSms für jede Telefonnummer und jeden Nachrichtentext in der Tabelle auszuführen.

Ersetze die beiden Codezeilen in deinem Skript durch: 

function sendSms(to, body) {

}

function myFunction() {
  sendSms("(312) 313-1434", "Hello phone!");
}

Ersetze die Nummer (312) 313-1434 durch deine Handynummer.

Die Aufgabe von sendSms besteht darin, eine HTTP-POST-Anforderung an die Twilio Messaging-API zu senden. Du musst nicht wissen, was dies bedeutet, um dieses Tutorial abzuschließen. Du kannst dir jedoch vorstellen, dass du ein Formular zum „Senden einer SMS-Nachricht“ mit den Feldern ZuVonNachrichtKonto-SID und Authentifizierungstoken erstellst.

Der gesamte Code in diesem Schritt wird in die Funktion sendSms integriert. Definiere die URL für die Twilio Messaging-API

var messagesUrl = "https://api.twilio.com/2010-04-01/Accounts/YOURACCOUNTSID/Messages.json";

Ersetze den Platzhalter YOURACCOUNTSID durch deine Konto-SID aus dem Dashboard

Definiere eine „Payload“, die deine SMS-Nachricht beschreibt und die Parameter der sendSms-Funktion für to und body verwendet. 

var payload = {
  "To": to,
  "Body" : body,
  "From" : "YOURTWILIOPHONENUMBER"
};

Ersetze den Platzhalter YOURTWILIONUMBER durch deine Twilio-Telefonnummer.

Erstelle einen Options-Hash, um Apps Script mitzuteilen, dass dies eine POST-Anforderung ist, die das „Payload“ verwendet:

var options = {
  "method" : "post",
  "payload" : payload
};

Füge den Optionen Header hinzu, um die Anforderung mit deiner Konto-SID und deinem Authentifizierungstoken aus dem Dashboard zu autorisieren:

options.headers = {    
  "Authorization" : "Basic " + Utilities.base64Encode("YOURACCOUNTSID:YOURAUTHTOKEN")
};

Führe abschließend deine HTTP-Anfrage aus. 

UrlFetchApp.fetch(messagesUrl, options);

Speichere deine Datei und führe dein Skript aus. Du wirst aufgefordert, deine App zu autorisieren, wenn du sie zum ersten Mal ausführst. Wenn alles gut geht, leuchtet dein Telefon auf und zeigt die Nachricht an.

SMS-Nachrichten aus der Tabelle senden

Es ist nicht besonders praktisch, Telefonnummern in unserem Skript fest zu codieren. Fügen wir eine Funktion hinzu, um die Telefonnummer und den Nachrichtentext aus der Tabelle zu lesen und diese Daten dann an sendSms zu übergeben.

Ersetze das, was wir in myFunction haben, durch: 

function myFunction() {
  sendAll();
}

Erstelle unmittelbar über myFunction (und unter sendSms) die Funktion sendAll. Der Rest des Codes wird hier eingefügt. 

function sendAll() {

}

Hol dir die Daten aus deiner Tabelle:

var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process
var numRows = sheet.getLastRow() - 1; 
var dataRange = sheet.getRange(startRow, 1, numRows, 2) 
var data = dataRange.getValues();

Füge den untenstehenden Code ein, der Folgendes tut: 

  • Er durchläuft die Daten.
  • Er versucht, eine SMS mit dem Nachrichtentext (Zeile[1]) an die Telefonnummer (Zeile[0]) zu senden.
  • Wenn die Anforderung erfolgreich ist, setzt er den Status auf „sent“.
  • Wenn die Anforderung einen Fehler auslöst, protokolliert er den Fehler und setzt den Status auf „error“.
  • Er aktualisiert die Statusspalte entsprechend.
for (i in data) {
  var row = data[i];
  try {
    response_data = sendSms(row[0], row[1]);
    status = "sent";
  } catch(err) {
    Logger.log(err);
    status = "error";
  }
  sheet.getRange(startRow + Number(i), 3).setValue(status);
}

Führe deine App erneut aus! Du musst sie erneut autorisieren, da jetzt auch versucht wird, auf deine Tabelle zuzugreifen.

Weiter

Google Sheets und Apps Script bieten überraschend viele Funktionen für eine Programmiersprache, für die keine Installation oder Konfiguration erforderlich ist. Wenn du das hier nützlich fandest, solltest du dir Folgendes ansehen: So bereinigst und validierst du Telefonnummern in einer Google-Tabelle. Damit kannst du eine ganze Tabelle voller Telefonnummern validieren und Fragen wie „Ist dies ein Mobiltelefon oder ein Festnetzanschluss?“ beantworten. 

Wenn du mehr über die Messaging-API erfahren möchtest, lies die folgenden Dokumente:

Wenn du Fragen hast oder coole Anwendungsfälle für das Senden von SMS aus einer Tabelle findest, würde ich gerne davon hören. Du kannst mich unter gb@twilio.com oder @greggyb erreichen.