Skip to content

Instantly share code, notes, and snippets.

View jeznag's full-sized avatar

Jeremy Nagel jeznag

View GitHub Profile
@jeznag
jeznag / autoresponder_via_deluge.ds
Created October 25, 2024 03:09
autoresponder_via_deluge
// This should be linked to a workflow rule that is triggered by creation of Smooth Message record
// With condition that Message Type starts with "in"
// pass sms_record_id into the function
inbound_message_record = twiliosmsextension0.safely_get_record_by_id_v2({"module_name":"twiliosmsextension0__Sent_SMS","record_id":sms_record_id.toLong()});
inbound_message = inbound_message_record.get("Message").trim();
last_outbound_message_record = twiliosmsextension0.get_last_outbound_message_to_number({
"from": inbound_message_record.get("From"),
"to": inbound_message_record.get("To"),
@jeznag
jeznag / meeting_reminder_sms
Created September 17, 2024 01:25
Sending meeting reminder SMS
meeting_record = zoho.crm.getRecordById("Events", meeting_id);
appointment_time = meeting_record.get("Start_DateTime");
// refer to https://en.wikipedia.org/wiki/List_of_tz_database_time_zones for list of timezones
timezone = "America/New_York";
info appointment_time;
// feel free to tweak the format
// example output is "03:00 PM Eastern Time on Sep 05"
// refer to https://www.zoho.com/deluge/help/functions/common/totime.html for symbols
DATE_TIME_FORMAT = "hh:mm a 'Eastern Time on' MMM dd";
@jeznag
jeznag / export-data.js
Created August 24, 2024 05:13
Downloading airtable data if there's no export button
// Run this in chrome dev tools
// Only helpful for one page worth of data
// Look at an API integration if you need to capture more data than that
(async function() {
const headerMap = {};
const headerArray = ['Row Index']; // Add Row Index as the first column
const rowMap = {};
// Function to extract and quote text content from a cell
@jeznag
jeznag / check_that_message_can_be_sent.ds
Created March 6, 2024 04:19
Zoho Desk integration via Zoho Flow
map check_that_message_can_be_sent(int ticket_id, string sms_content, string send_btn_state, string channel, int desk_org_id)
{
try
{
if(channel != "SMS via Zoho Flow" || sms_content.isEmpty() || send_btn_state != "true")
{
info "stop processing outbound";
info "channel> " + channel;
info "sms_content> " + sms_content;
info "send_btn_state> " + send_btn_state;
@jeznag
jeznag / sending_with_emojis.ds
Created January 25, 2024 20:47
Send SMS from Zoho CRM
// Choose from number
from_number = "+234324324324";
module_name = "Leads";
record_id = 803228000138359036;
crm_record = zoho.crm.getRecordById(module_name, record_id);
to_number = crm_record.get("Mobile");
record_name = crm_record.get("First_Name") + " " + crm_record.get("Last_Name");
message_text = "🤒 Unfortunately your Orientation on " + 123 + " has been canceled due to staff illness. If concerned, contact - 1300 077 994. 🐾💞";
// leave media_urls as null if you're not sending MMS, otherwise this format: ["https://mysite.com/image.png"]
@jeznag
jeznag / safe-slack.js
Created August 31, 2023 02:59
Safe Slack
// ==UserScript==
// @name Safe Slack
// @namespace http://tampermonkey.net/
// @version 0.1
// @description Hide channels + messages
// @author You
// @match https://app.slack.com/client/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=slack.com
// @grant none
// ==/UserScript==
@jeznag
jeznag / send_sms_from_zoho_books.ds
Created April 17, 2023 02:19
Sending invoice reminders via SMS from Zoho Books
organizationID = organization.get("organization_id");
payment_link_payload = Map();
payment_link_payload.put("customer_id",invoice.get("customer_id"));
payment_link_payload.put("payment_amount",invoice.get("total"));
payment_link_payload.put("description",invoice.get("invoice_number"));
payment_link_payload.put("expiry_time",invoice.get("due_date").toDate().addDay(90));
JSONString = Map();
JSONString.put("JSONString",payment_link_payload);
result = invokeurl
[
@jeznag
jeznag / widget.html
Created December 30, 2022 04:20
Widget to embed Zoho Creator form inside Zoho CRM
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<h2>Zoho Creator Integration</h2>
<iframe id="creator-iframe" width="100%" height="800px"></iframe>
<script src="https://live.zwidgets.com/js-sdk/1.1/ZohoEmbededAppSDK.min.js"></script>
<script>
@jeznag
jeznag / geocodeZohoCRMLead.js
Last active September 4, 2022 10:43
Geocode a Zoho CRM lead using a node js custom function
const axios = require('axios')
const fs = require('fs')
const POSITION_STACK_API_KEY = 'REDACTED';
module.exports = async function (context, basicIO) {
/* 1)entity_object 2)user_object 3)organization_object 4)variables_object 5)request_object are the default parameters which contains entity information, user information,
organization information, variables inforamtion and request information in it respectively.
2) For Button Mass action and RL Button, ids list will be available in basicIO object. you can get by basicIO.getParameter("ids") & basicIO.getParameter("related_entity_ids") respectively
*/
@jeznag
jeznag / storing_sms_data_in_lead.ds
Created July 6, 2022 10:08
storing_sms_data_in_lead
message_record = zoho.crm.getRecordById("twiliosmsextension0__Sent_SMS",message_id);
if(lead_id != null)
{
update_payload = {"Last_SMS_received":message_record.get("Message")};
update_resp = zoho.crm.updateRecord("Leads",lead_id,update_payload);
}
if(contact_id != null)
{
update_payload = {"Last_SMS_received":message_record.get("Message")};
update_resp = zoho.crm.updateRecord("Contacts",contact_id,update_payload);