Google Apps Script
Google Apps Script es una plataforma de scripts basada en la nube que permite a los usuarios automatizar y ampliar la funcionalidad de las aplicaciones de Google Workspace (como Google Sheets, Google Docs, Google Drive, Gmail y más). Utiliza JavaScript para crear scripts y flujos de trabajo personalizados que pueden automatizar tareas repetitivas, integrarse con otros servicios de Google y crear interfaces de usuario personalizadas. Google Apps Script se puede utilizar para crear flujos de trabajo complejos, como la generación automática de informes, el envío de correos electrónicos personalizados, la actualización de datos en tiempo real o la gestión de archivos en Google Drive. Es especialmente útil para empresas e individuos que desean aumentar la productividad y agilizar tareas sin necesidad de conocimientos extensos de programación. La plataforma también permite la creación de complementos para personalizar aún más las aplicaciones de Google Workspace.
Esta es una colección de fragmentos de código que se pueden ejecutar dentro de Google Apps Script. Los fragmentos son altamente personalizables y pueden ser muy útiles cuando no se dispone de una infraestructura de servidor propia.
Google Calendar
Para cada función, el período de tiempo se puede ajustar cambiando la variable hours
. El valor predeterminado es 96.
Enviar SMS
La función SevenCalendarSMS
envía un SMS para cada evento que ocurra en el período de tiempo especificado.
function SevenCalendarSMS() {
const apiKey = 'IHR_API_SCHLÜSSEL'
const to = 'INSERT_YOUR_RECIPIENT_OF_CHOICE'
const toPlaceholder = key => `:${key}:`
const placeholder_id = toPlaceholder('ID')
const placeholder_time = toPlaceholder('TIME')
const placeholder_title = toPlaceholder('TITLE')
const now = new Date()
const statusTagKey = 'seven_status_sms'
const statusTagValue = 'ok'
const textTemplate = 'Google Calendar informs you about the upcoming event {placeholder_title} with ID {placeholder_id} starting at {placeholder_time}.'
const calendarName = ''
const delay = ''
const flash = false
const foreign_id = ''
const from = 'GoogleApps'
const hours = 96 // hours from now until end date
const label = ''
const performance_tracking = false
const calendar = '' === calendarName ?
CalendarApp.getDefaultCalendar() :
CalendarApp.getCalendarsByName(calendarName)
const events = calendar.getEvents(now, new Date(now.getTime() + (hours * 60 * 60 * 1000)))
for (const event of events) {
if (statusTagValue === event.getTag(statusTagKey)) continue
let text = textVorlage
Object.entries({
[placeholder_id]: () => event.getId(),
[placeholder_time]: () => event.getStartTime(),
[placeholder_title]: () => event.getTitle()
}).forEach(([k, v]) => text = text.replace(k, v()))
const payload = {
from: from,
text,
to
}
Object.entries({
delay,
flash,
foreign_id,
from: from,
label,
performance_tracking
}).forEach(([k, v]) => {
if (false !== v) {
if (true === v) payload[k] = '1'
else if ('' !== v) payload[k] = v
}
})
const response = UrlFetchApp.fetch('https://gateway.seven.io/api/sms', {
headers: {'X-Api-Key': apiKey},
method: 'post',
payload
}).getContentText()
if (100 !== Number.parseInt(response))
throw new Error(`Unexpected status code "${response}".`)
Logger.log(response)
event.setTag(statusTagKey, statusTagValue)
}
}
Llamada de voz
La función SevenCalendarVoice
realiza una llamada de texto a voz para cada evento en el período de tiempo especificado.
function SevenCalendarVoice() {
const apiKey = 'IHR_API_SCHLÜSSEL'
const to = 'INSERT_YOUR_RECIPIENT_OF_CHOICE'
const toPlaceholder = key => `:${key}:`
const placeholder_id = toPlaceholder('ID')
const placeholder_time = toPlaceholder('TIME')
const placeholder_title = toPlaceholder('TITLE')
const now = new Date()
const statusTagKey = 'seven_status_voice'
const statusTagValue = 'ok'
const textTemplate = 'Google Calendar informs you about the upcoming event {placeholder_title} with ID {placeholder_id} starting at {placeholder_time}.'
const calendarName = ''
const from = '+49179876543210'
const hours = 96 // hours from now until end date
const calendar = '' === calendarName ?
CalendarApp.getDefaultCalendar() :
CalendarApp.getCalendarsByName(calendarName)
const events = calendar.getEvents(now, new Date(now.getTime() + (hours * 60 * 60 * 1000)))
for (const event of events) {
if (statusTagValue === event.getTag(statusTagKey)) continue
let text = textTemplate
Object.entries({
[placeholder_id]: () => event.getId(),
[placeholder_time]: () => event.getStartTime(),
[placeholder_title]: () => event.getTitle()
}).forEach(([k, v]) => text = text.replace(k, v()))
const payload = {
from: from,
text,
to
}
const response = UrlFetchApp.fetch('https://gateway.seven.io/api/voice', {
headers: {'X-Api-Key': apiKey},
method: 'post',
payload
}).getContentText()
Logger.log(response)
const code = response.split('')[0]
if ('100' !== code) throw new Error(`Unexpected status code "${code}".`)
event.setTag(statusTagKey, statusTagValue)
}
}
Google Contacts
Enviar SMS
La función SevenContactsSMS
envía un SMS a todos tus contactos.
function SevenContactsSMS() {
const apiKey = 'IHR_API_SCHLÜSSEL'
const toPlaceholder = key => `:${key}:`
const placeholder_id = toPlaceholder('ID')
const placeholder_name = toPlaceholder('FULL_NAME')
const placeholder_notes = toPlaceholder('NOTES')
const textTemplate = 'Dear {placeholder_name} our new phone number is +4901234567890. Kind regards Phil from seven!'
const delay = ''
const flash = false
const foreign_id = ''
const from = 'GoogleApps'
const label = ''
const performance_tracking = false
for (const contact of ContactsApp.getContacts()) {
const phones = contact.getPhones()
if (!phones.length) continue
let text = textTemplate
Object.entries({
[placeholder_id]: () => contact.getId(),
[placeholder_name]: () => contact.getFullName(),
[placeholder_notes]: () => contact.getNotes()
}).forEach(([k, v]) => text = text.replace(k, v()))
const payload = {
from: from,
text,
to: (phones.find(p => p.isPrimary()) || phones.shift()).getPhoneNumber()
}
Object.entries({
delay,
flash,
foreign_id,
from: from,
label,
performance_tracking
}).forEach(([k, v]) => {
if (false !== v) {
if (true === v) payload[k] = '1'
else if ('' !== v) payload[k] = v
}
})
const response = UrlFetchApp.fetch('https://gateway.seven.io/api/sms', {
headers: {'X-Api-Key': apiKey},
method: 'post',
payload
}).getContentText()
if (100 !== Number.parseInt(response))
throw new Error(`Unexpected status code "${response}".`)
Logger.log(response)
}
}
Llamada de voz
La función SevenContactsVoice
realiza una llamada de texto a voz a todos sus contactos.
function SevenContactsVoice() {
const apiKey = 'IHR_API_SCHLÜSSEL'
const toPlaceholder = key => `:{key}:`
const placeholder_id = toPlaceholder('ID')
const placeholder_name = toPlaceholder('FULL_NAME')
const placeholder_notes = toPlaceholder('NOTES')
const textTemplate = `Dear {placeholder_name} our new phone number is +4901234567890. Kind regards Phil from seven!`
const from = '+49179876543210'
for (const contact of ContactsApp.getContacts()) {
const phones = contact.getPhones()
if (!phones.length) continue
let text = textTemplate
Object.entries({
[placeholder_id]: () => contact.getId(),
[placeholder_name]: () => contact.getFullName(),
[placeholder_notes]: () => contact.getNotes()
}).forEach(([k, v]) => text = text.replace(k, v()))
const payload = {
from,
text,
to: (phones.find(p => p.isPrimary()) || phones.shift()).getPhoneNumber()
}
const response = UrlFetchApp.fetch('https://gateway.seven.io/api/voice', {
headers: {'X-Api-Key': apiKey},
method: 'post',
payload
}).getContentText()
Logger.log(response)
const code = response.split('')[0]
if ('100' !== code) throw new Error(`Unexpected status code "${code}".`)
}
}