Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

265
Views
Actualización de la API de usuarios de Zendesk de Hojas de cálculo de Google

Voy a empezar diciendo que es inmensamente frustrante saber cómo hacer algo pero nunca poder terminarlo; Este es otro de esos proyectos para mí.

Escenario: uso de una hoja de cálculo de Google y un script de aplicaciones. Estoy intentando actualizar varios registros de usuario en Zendesk usando su API .

Creo que probablemente tenga la mayoría si es correcto (por supuesto, debo corregirlo) con el siguiente script, sin embargo, simplemente no puedo hacer que actualice ningún registro. Sospecho que podría tener que ver con la forma en que se presenta la matriz (un área sobre la que lamentablemente no sé lo suficiente).

 function updateManyUsers(){ var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1'); var [headers, ...rows] = sheet.getDataRange().getValues(); var data = {} var items = [] rows.forEach(function(r) { var obj={} r.forEach(function (c, j) { obj[headers[j]] = c }) var data = {}//moved data['users'] = obj // moved this inside your loop items.push(data) // pushed the object into the items array }) Logger.log("Log JSON Stringify Items: " + JSON.stringify(items)) items.forEach(function(i) { // added this to loop over objects in items var url = 'https://itsupportdesk1611575857.zendesk.com/api/v2/users/update_many.json'; //https://developer.zendesk.com/api-reference/ticketing/users/users/#update-user var user = 'myemailaddresshere/token'; var pwd = 'mytoken'; var options = { 'method' : 'PUT', 'headers': { 'Authorization': "Basic " + Utilities.base64Encode(user + ':' + pwd) }, 'payload' : JSON.stringify(i), 'contentType': 'application/json', 'muteHttpExceptions': true }; UrlFetchApp.fetch(url, options); Logger.log(i) var response = UrlFetchApp.fetch(url, options); Logger.log(response); }) }

Revisé todo lo que pude siguiendo la documentación, sé que tenía los puntos finales incorrectos y el método (?) También (establecido en Publicar en lugar de Push). He pasado por varios mensajes de error en los que he intentado actuar y este es el actual: Salida del registrador

Esta es una imagen de los datos en mi hoja. Datos de mi hoja

Suplementario: Para mejorar en esto, me gustaría ponerme en un camino de aprendizaje, pero no estoy seguro de cuál es el camino; la mayor parte de mi trabajo de automatización y secuencias de comandos se realiza con la secuencia de comandos de Google Apps, por lo que la gente recomendaría un curso de JavaScript? Alterno entre eso y Python sin saber qué me conviene más para comprender mejor este tipo de problema.

Muchas gracias de antemano.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Desde su punto final en su secuencia de comandos, pensé que podría haber querido usar "Actualización por lotes". Ref Si mi comprensión es correcta, se puede usar el siguiente rizo de muestra en el documento oficial. Árbitro

 curl https://{subdomain}.zendesk.com/api/v2/users/update_many.json \ -d '{"users": [{"id": 10071, "name": "New Name", "organization_id": 1}, {"external_id": "123", "verified": true}]}' \ -H "Content-Type: application/json" -X PUT \ -v -u {email_address}:{password}

Si este comando curl de muestra se convierte a Google Apps Script usando su script, ¿qué tal la siguiente modificación?

Guión modificado:

 function updateManyUsers2() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1'); var [headers, ...rows] = sheet.getDataRange().getDisplayValues(); var users = rows.map(r => { var temp = {}; headers.forEach((h, j) => { if (r[j] != "") temp[h] = r[j]; }); return temp; }); var url = 'https://itsupportdesk1611575857.zendesk.com/api/v2/users/update_many.json'; var user = 'myemailaddresshere/token'; var pwd = 'mytoken'; var options = { 'method': 'PUT', 'headers': { 'Authorization': "Basic " + Utilities.base64Encode(user + ':' + pwd) }, 'payload': JSON.stringify({ users }), 'contentType': 'application/json', 'muteHttpExceptions': true }; var response = UrlFetchApp.fetch(url, options); Logger.log(response.getContentText()); }

Nota:

  • Del documento oficial, dice Bulk or batch updates up to 100 users. . Por lo tanto, cuando desee utilizar más datos, modifique el script anterior. Tenga cuidado con esto.

  • Si ocurre un error, verifique nuevamente los valores de users , user y pwd .

Referencia:

  • buscar (url, parámetros)
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!