We worked with Bill French of iPad CTO to develop this Zendesk Round Robin Ticket Assignment application. This application was made using Google Apps Script and is built entirely in Google Docs. You can run this script as long as you have an active Gmail or Google Apps account.
This script is run off of a simple spreadsheet (linked below) which is used to manage your support team and the tickets that will be assigned to them. Assignments are made based on tags. We recommend you use Triggers to have a tag automatically applied to each ticket as it is submitted.
After you download the Round Robin app, follow these steps.
Create a trigger
Create a Trigger based on your criteria to add a Tag when the ticket is created.
This app will assign your tickets out based on this tag. It is very important that this Tag matches the tag placed in the Notes field of your column headers.
Set up the apps script
On the spreadsheet, navigate to: Tools > Script Editor.
- Set the [Spreadsheet ID] value in Line 10 to the ID of your spreadsheet.
This can be found in the URL of your spreadsheet after ‘http://…...spreadsheet/ccc?key=’ and before the ‘&’
CommunityTip - Google spreadsheets have a new URL format. There isn't any ampersand (&) symbol in the Google Docs / now Google Drive URL. Instead, just grab the info after https://docs.google.com/spreadsheet/ccc?key= and before #gid=0 (see attached screenshot - I obscured my spreadsheet ID).
- Set the [subdomain] value in Line 23 to your Zendesk subdomain.
For example if your Zendesk domain is: subdomain.zendesk.com, the value here would be: subdomain.
- Set the [username] value in Line 24 to your Zendesk username.
For example: firstname.lastname@example.org
- Set the [Zendesk API KEY] value in Line 25 to your current Zendesk API Key.
This can be found by clicking the Manage icon then selecting Channels > API.
Community Tip - Save the API setting! If you don't already have Token Access enabled in Manage > Channels > API, you need to check that box AND CLICK THE SAVE BUTTON. I checked the box, copied the API token and went on my merry way only to find out that nothing was happening... until I went back and double-checked everything and figured out that I hadn't clicked the save button on that settings page. Also note that Zendesk issues a new API token if and when you enable it for the second time.
Set up automatic updates
To automate the process of assigning tickets in a timely fashion, you must use a trigger in Google Docs to run the makeAssignment() function every ﬁve minutes or perhaps at intervals suitable to the ﬂow of the tickets being received.
- Select the Tools | Script Editor... from the sheet, and then select Resources | Current project’s triggers
- Run: makeAssignments Events: Time-driven: minutes timer > Every minute
Sample use case
We currently have four different Forms that End-Users can submit tickets under: Question, Problem, Account Inquiry and Other. We have set-up a Trigger that applies the tags ‘form_question’, ‘form_problem’, ‘form_account’, and ‘form_other’ when a ticket is submitted. Any users with an ‘x’ next to their name will be assigned the next ticket that comes in with that tag (as long as they are next in the queue).
You can use this script with other tags as well, it does not need to be used with Forms in particular. However, these tags must be applied to the ticket once it is created in order for the script to run properly.
Rob Baker was kind enough to share his version of the Zendesk Round Robin Script titled 'Zendesk Roulette'. Here is a list of the new features and a link to the updated script:
|* Added Properties so that each function could be called independently|
|* Added a main function so script can be manually run|
|* Added search filter changes to limit results to only tags of interest and oldest tickets first|
|to avoid hitting script processing time limits|
|* Limited assignment to a maximum of 10 tickets per pass to avoid the entire queue from being assigned at once|
|* Fixed an issue where the last agent assigned would continue to be pushed tickets if there were no active agents|
|including the previously assigned agent|
|Variables that need to be populated prior to use|