Google Data Studio Integration

17 Comments

  • Felipe Dias

    Please, we need an integration -> (Insights & Explore) + Data Studio so bad!

    Help us, Zendesk Team!

    3
  • Haeli Kim(김해리)

    Love this idea :) 

    1
  • Joseph DeVenuta

    +💯 Would love a native data connector between Zendesk and Google Data Studio

    2
  • Jay Desai

    zendesk Any recent updates on this integration? 

    1
  • Caleb Casady

    Would love this integration. 

    Currently I am utilizing Zapier to take data from Zendesk and placing it into a Google Sheet. I then pull data from GS, into GDS. 

    0
  • Githin Surendran

    Really need this integration including with support, Talk, and Chat dashboards as well. 

    0
  • Jessica Peck

    We also really need this integration so we can pull support data into one dashboard across our company - is this at all being considered or in the works?  Also, if the integration doesn't exist is there a way around this - could the APIs be used to pull data from Explore?

    0
  • Performance Big Mamma

    +1 for direct integration with Data Studio!

    0
  • Dev Ops

    Massive +1 for this feature!!

    0
  • Distinctive Schools

    Yes, please build this connector. I love Zendesk reporting but I can't really leverage this product right now because of the pay wall for being an agent. I don't want to pay for full agent licensing just so our LOBs and Senior leaders can see Explore and I don't want to fill out inboxes with PDFs and images.

    Data Studio is deeply integrated with our environment and having this connector will allow us to put all our organizations data in one space and allow for manipulation and dynamic reporting.

    Would be nice not to have to pay a third party integrator to accomplish this.

    0
  • Leo

    Hey guys,

     

    Agreed, I currently use Data Studio to create dashboards, but I need to manually import a report from ZD. The issue with that is that the report is very limited to the data set, so if I want to use for example, the Ticket Updates Data set, I need a 2nd report, and therefore, a 2nd manual upload.

    0
  • Allison S.

    Same here, I really need a way to compare data from Zendesk - specifically in relation to data from our 4 article buckets (article type) as we have different baselines for each type. 

    The ability to filter by article type (and/or label) would really help to see how each article type is performing. 

    0
  • Jake Russell

    I agree that this would be incredibly useful to have access to this integration so all data could be viewed inside of Google Data Studio.

    0
  • kristi

    Agree this would be fantastic

    0
  • Vladimir

    +1 will love to have this integration

    0
  • Jaïs Pingouroux

    It's actually possible through the combined use of Google Script, the ZD API and Datastudio.

    I've written a script to recover tickets from the ZD API, and put them on a Google Spreadsheet.

    You can use Gscript triggers to execute your code regularly, and use your GSheet as a datasource for datastudio.

    Feel free to adjust and adapt to your own custom ticket fields...

    function onOpen() {
    var ui = SpreadsheetApp.getUi();
    ui.createMenu('ZD stats')
    .addItem('Refresh tickets','zd_tickets')
    .addToUi();
    }


    function search_array(my_array, field_id, field_value){
    var r = {};
    if (typeof(my_array) == "object"){
    my_array.forEach(function(e,i){
    if (field_id in e && e[field_id] == field_value){
    r=e;
    }
    });
    }
    return r;
    }

    function zd_get_incremental_tickets(){
    var tickets = [];
    var users = [];
    var groups = [];
    var orgs = [];
    var url = "https://XXX.zendesk.com/api/v2/incremental/tickets.json?per_page=1000&start_time=1609459200&include=users,groups,organizations,metric_sets,ticket_forms"; // Replace XXX by your company ZD subdomain
    var end_of_stream = false;
    while (end_of_stream == false){
    var response = UrlFetchApp.fetch(url, {
    "headers": {
    "Authorization" : "Basic " + Utilities.base64Encode("[ADMINISTRATOR_EMAIL]/token:[PERSONAL_TOKEN]")
    }
    });

    resp = JSON.parse(response.getContentText());
    url = resp['next_page'];
    end_of_stream = resp['end_of_stream'];
    resp['tickets'].forEach(function(e,i){
    tickets.push(e);
    });
    resp['users'].forEach(function(e,i){
    users.push(e);
    });
    resp['groups'].forEach(function(e,i){
    groups.push(e);
    });
    resp['organizations'].forEach(function(e,i){
    orgs.push(e);
    });
    var forms = resp['ticket_forms'];
    }
    return [tickets, users, groups, orgs, forms];
    }


    function zd_tickets(){

    // Clear sheet and set title
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Tickets"); // Set the spreadsheet name as appropriate
    if (sheet != null){
    sheet.getRange("A:S").clear(); // Adjust these ranges to the columns you want to display
    sheet.getRange("A1:S1").setValues([["Ticket ID", "Creation date", "Assign date", "Assign Time", "Due date", "Solve date", "Status", "Priority", "Type", "SOME_CUSTOM_FIELD1", "Requester Organization", "Group", "Assignee", "SOME_CUSTOM_FIELD2", "Subject", "SOME_CUSTOM_FIELD3", "Satisfaction Rating", "Full Resolution Time", "Ticket form"]]);
    }
    var row=2;

    // Set variables
    var incrementals = zd_get_incremental_tickets();
    var tickets = incrementals[0];
    var users = incrementals[1];
    var groups = incrementals[2];
    var orgs = incrementals[3];
    var forms = incrementals[4];

    // Fill Support tickets sheet
    tickets.forEach(function(e,i){
    if (e['status'] != "deleted"){
    var assign_time = "";
    if (e['metric_set']['initially_assigned_at']){
    assign_time = Math.floor((new Date(e['metric_set']['initially_assigned_at']).getTime() - new Date(e['created_at']).getTime())/(60*1000));
    }
    var vals = [e['id'],e['created_at'], e['metric_set']['initially_assigned_at'], assign_time, e['due_at'],e['metric_set']['solved_at'],e['status'], e['priority'], e['type'], search_array(e['custom_fields'], "id", "CUSTOM_FIELD_1_ID")["value"],search_array(orgs, "id", e['organization_id'])['name'], search_array(groups, "id", e['group_id'])["name"], search_array(users, "id", e["assignee_id"])["name"], search_array(e['custom_fields'], "id", "CUSTOM_FIELD_2_ID")["value"], e['subject'], search_array(e['custom_fields'], "id", "CUSTOM_FIELD_3_ID")["value"], e["satisfaction_rating"]["score"], e['metric_set']['full_resolution_time_in_minutes']['business'], search_array(forms,"id",e['ticket_form_id'])['name']];
    sheet.getRange(row,1,1,19).setValues([vals]);
    row +=1;
    }
    });

    // Create a filter
    if (sheet.getFilter() !== null){
    sheet.getFilter().remove();
    }
    sheet.getRange(1,1,row,19).activate();
    sheet.getRange(1,1,row,19).createFilter();
    sheet.getRange('A1').activate();
    sheet.getFilter().sort(1, false);
    }
    1
  • Gonzalo

    Hola a todos.

    Hay un complemento muy práctico en google sheet, se llama "data connector for zendesk" tambien se puede armar un trigger de auto refresh

    Luego solo queda integrar integrar ese archivo de Google sheet a Datastudio

     

    Espero les sirva!

    saludos

    1

Please sign in to leave a comment.

Powered by Zendesk