1. Home
  2. Drittanbieter
  3. Google Apps Script

Google Apps Script

Dies ist eine Sammlung von Code-Snippets, die innerhalb von Google Apps
Script
ausgeführt werden können. Die Snippets sind in hohem Maße anpassbar und
können in Fällen, in denen keine eigene Serverinfrastruktur vorhanden ist, sehr
nützlich sein.

Google Calendar

Für jede Funktion kann die Zeitspanne durch Ändern der Variable
Stunden geändert werden. Der Standardwert ist 96.

SMS

Die Funktion Sms77CalendarSMS sendet eine SMS für jedes Ereignis, das
in dem angegebenen Zeitrahmen eintritt.

function Sms77CalendarSMS() {
    const apiKey = 'IHR_SMS77_SCHNITTSTELLENSCHLÜSSEL';
    const to = 'DIE_GEWÜNSCHTE_EMPFÄNGERNUMMER';

    const zuPlatzhalter = key => `:${key}:`;
    const platzhalter_id = zuPlatzhalter('ID');
    const platzhalter_zeit = zuPlatzhalter('TIME');
    const platzhalter_titel = zuPlatzhalter('TITLE');
    const jetzt = new Date();
    const statusTagKey = 'sms77_status_sms';
    const statusTagValue = 'ok';

    const textVorlage = `Google Kalendar: Anstehendes Ereignis: ${platzhalter_titel} mit ID ${platzhalter_id} beginnt ${platzhalter_zeit}.`;

    const kalendarName = '';
    const debug = false;
    const delay = '';
    const flash = false;
    const foreign_id = '';
    const absender = 'GoogleApps';
    const stunden = 96; // Stunden ab jetzt bis Enddatum
    const label = '';
    const performance_tracking = false;

    for (const event of ('' === kalendarName ? CalendarApp.getDefaultCalendar()
        : CalendarApp.getCalendarsByName(kalendarName)).getEvents(
        jetzt, new Date(jetzt.getTime() + (stunden * 60 * 60 * 1000)))) {
        if (statusTagValue === event.getTag(statusTagKey)) continue;

        let text = textVorlage;
        Object.entries({
            [platzhalter_id]: () => event.getId(),
            [platzhalter_zeit]: () => event.getStartTime(),
            [platzhalter_titel]: () => event.getTitle(),
        }).forEach(([k, v]) => text = text.replace(k, v()));

        const payload = {
            from: absender,
            text,
            to,
        };
        Object.entries({
            debug,
            delay,
            flash,
            foreign_id,
            from: absender,
            label,
            performance_tracking
        }).forEach(([k, v]) => {
            if (false !== v) {
                if (true === v) payload[k] = '1';
                else if ('' !== v) payload[k] = v;
            }
        });

        const antwort = UrlFetchApp.fetch('https://gateway.sms77.io/api/sms', {
            headers: {
                SentWith: 'Google-Apps',
                'X-Api-Key': apiKey,
            },
            method: 'post',
            payload,
        }).getContentText();

        if (100 !== Number.parseInt(antwort)) throw new Error(`Unexpected status code "${antwort}".`);

        Logger.log(antwort);

        event.setTag(statusTagKey, statusTagValue);
    }
}

Sprachnachricht

Die Funktion Sms77CalendarVoice gibt für jedes Ereignis, das im
angegebenen Zeitraum eintritt, einen Text-to-Speech-Aufruf aus.

function Sms77CalendarVoice() {
    const apiKey = 'IHR_SMS77_SCHNITTSTELLENSCHLÜSSEL';
    const to = 'DIE_GEWÜNSCHTE_EMPFÄNGERNUMMER';

    const zuPlatzhalter = key => `:${key}:`;
    const platzhalter_id = zuPlatzhalter('ID');
    const platzhalter_zeit = zuPlatzhalter('TIME');
    const platzhalter_titel = zuPlatzhalter('TITLE');
    const jetzt = new Date();
    const statusTagKey = 'sms77_status_voice';
    const statusTagValue = 'ok';

    const textVorlage = `Google Kalendar informiert über anstehendes Ereignis ${platzhalter_titel} mit Beginn ${platzhalter_zeit}.`;

    const kalendarName = '';
    const absender = '+491771783130';
    const stunden = 96; // Stunden ab jetzt bis Enddatum
    const xml = false;

    for (const event of ('' === kalendarName ? CalendarApp.getDefaultCalendar()
        : CalendarApp.getCalendarsByName(kalendarName)).getEvents(
        jetzt, new Date(jetzt.getTime() + (stunden * 60 * 60 * 1000)))) {
        if (statusTagValue === event.getTag(statusTagKey)) continue;

        let text = textVorlage;
        Object.entries({
            [platzhalter_id]: () => event.getId(),
            [platzhalter_zeit]: () => event.getStartTime(),
            [platzhalter_titel]: () => event.getTitle(),
        }).forEach(([k, v]) => text = text.replace(k, v()));

        const payload = {
            from: absender,
            text,
            to,
        };

        if (xml) payload.xml = '1';

        const antwort = UrlFetchApp.fetch('https://gateway.sms77.io/api/voice', {
            headers: {
                SentWith: 'Google-Apps',
                'X-Api-Key': apiKey,
            },
            method: 'post',
            payload,
        }).getContentText();

        Logger.log(antwort);

        const code = antwort.split('\n')[0];
        if ('100' !== code) throw new Error(`Unerwarteter Statuscode "${code}".`);

        event.setTag(statusTagKey, statusTagValue);
    }
}

Google Kontakte

SMS

Die Funktion Sms77ContactsSMS sendet eine SMS an alle Ihre Kontakte.

function Sms77ContactsSMS() {
    const apiKey = 'IHR_SMS77_SCHNITTSTELLENSCHLÜSSEL';

    const zuPlatzhalter = key => `:${key}:`;
    const platzhalter_id = zuPlatzhalter('ID');
    const platzhalter_name = zuPlatzhalter('FULL_NAME');
    const placeholder_notizen = zuPlatzhalter('NOTES');

    const textVorlage = `Liebste(r) ${platzhalter_name}, unsere neue Rufnummer lautet +4901234567890. Beste Grüße von Phil von sms77!`;

    const debug = false;
    const delay = '';
    const flash = false;
    const foreign_id = '';
    const absender = 'GoogleApps';
    const label = '';
    const performance_tracking = false;

    for (const contact of ContactsApp.getContacts()) {
        const phones = contact.getPhones();
        if (!phones.length) continue;

        let text = textVorlage;
        Object.entries({
            [platzhalter_id]: () => contact.getId(),
            [platzhalter_name]: () => contact.getFullName(),
            [placeholder_notizen]: () => contact.getNotes(),
        }).forEach(([k, v]) => text = text.replace(k, v()));

        const payload = {
            from: absender,
            text,
            to: (phones.find(p => p.isPrimary()) || phones.shift()).getPhoneNumber(),
        };
        Object.entries({
            debug,
            delay,
            flash,
            foreign_id,
            from: absender,
            label,
            performance_tracking
        }).forEach(([k, v]) => {
            if (false !== v) {
                if (true === v) payload[k] = '1';
                else if ('' !== v) payload[k] = v;
            }
        });

        const antwort = UrlFetchApp.fetch('https://gateway.sms77.io/api/sms', {
            headers: {
                SentWith: 'Google-Apps',
                'X-Api-Key': apiKey,
            },
            method: 'post',
            payload,
        }).getContentText();

        if (100 !== Number.parseInt(antwort)) throw new Error(`Unexpected status code "${antwort}".`);

        Logger.log(antwort);
    }
}

Sprachnachrichten

Die Funktion Sms77ContactsVoice gibt einen Text-to-Speech-Anruf an
alle Ihre Kontakte aus.

function Sms77ContactsVoice() {
    const apiKey = 'IHR_SMS77_SCHNITTSTELLENSCHLÜSSEL';

    const zuPlatzhalter = key => `:${key}:`;
    const platzhalter_id = zuPlatzhalter('ID');
    const platzhalter_name = zuPlatzhalter('FULL_NAME');
    const placeholder_notizen = zuPlatzhalter('NOTES');

    const textVorlage = `Liebste(r) ${platzhalter_name} unsere neue Rufnummer lautet +4901234567890. Beste Grüße Phil von sms77!`;

    const absender = '+491771783130';
    const xml = false;

    for (const contact of ContactsApp.getContacts()) {
        const phones = contact.getPhones();
        if (!phones.length) continue;

        let text = textVorlage;
        Object.entries({
            [platzhalter_id]: () => contact.getId(),
            [platzhalter_name]: () => contact.getFullName(),
            [placeholder_notizen]: () => contact.getNotes(),
        }).forEach(([k, v]) => text = text.replace(k, v()));

        const payload = {
            from: absender,
            text,
            to: (phones.find(p => p.isPrimary()) || phones.shift()).getPhoneNumber(),
        };

        if (xml) payload.xml = '1';

        const antwort = UrlFetchApp.fetch('https://gateway.sms77.io/api/voice', {
            headers: {
                SentWith: 'Google-Apps',
                'X-Api-Key': apiKey,
            },
            method: 'post',
            payload,
        }).getContentText();

        Logger.log(antwort);

        const code = antwort.split('\n')[0];
        if ('100' !== code) throw new Error(`Unerwarteter Statuscode "${code}".`);
    }
}