UrlFetchApp.fetch с API

я хочу выполнить один Zoho CRM API и написать в своем GAS

  var result=UrlFetchApp.fetch('https://crm.zoho.com/crm/private/xml/Leads/insertRecords?authtoken=XXXXX&scope=crmapi&newFormat=1&xmlData=<Leads><row no="1"><FL val="Company">Your Company</FL><FL val="First Name">Hannah</FL><FL val="Last Name">Smith</FL><FL val="Email">[email protected]</FL></row></Leads>');

а у меня одна ошибка

Argument non valide : https://crm.zoho.com/crm/private/xml/Leads/insertRecords?authtoken=XXXXXX&scope=crmapi&newFormat=1&xmlData=<Leads><row%20no="1"><FL%20val="Company">Your%20Company</FL><FL%20val="First%20Name">Hannah</FL><FL%20val="Last%20Name">Smith</FL><FL%20val="Email">[email protected]</FL></row></Leads> (ligne 35, fichier "MySQLtoZohoCRM")

но если я вставлю этот URL в свой Chrome или FF, он запустится !!!

API для документов

Вы знаете, почему у меня эта ошибка в GAS, а не в Chrome?

Спасибо


person user2235952    schedule 02.04.2013    source источник


Ответы (1)


Есть две формы UrlFetchApp.fetch():

Вы используете первую форму, но предоставленный вами параметр не проходит проверку, поскольку это не просто URL-адрес. Вы должны использовать вторую форму со значениями, которые вы бы поместили после '?' как варианты.

Попробуй это:

var url = 'https://crm.zoho.com/crm/private/xml/Leads/insertRecords';
var xmlData = '<Leads><row no="1"><FL val="Company">Your Company</FL><FL val="First Name">Hannah</FL><FL val="Last Name">Smith</FL><FL val="Email">[email protected]</FL></row></Leads>';
var options =
  {
     'authtoken' : 'XXXXX',
     'scope' : 'crmapi',
     'newFormat' : '1',
     'xmlData' : encodeURIComponent(xmlData)
  }
var result=UrlFetchApp.fetch(url,options);

var output = Utilities.jsonParse(result.getContentText());
Logger.log(output); 
person Mogsdad    schedule 02.04.2013
comment
спасибо за ваш ответ, я попробовал ваш код, но у меня уже есть ошибка. FL val=Last Name›Smith‹/FL›‹FL val=Email›[email protected]‹/FL›‹/row›‹/Leads› ‹response›‹error›‹code›4600‹/code›‹сообщение ›Невозможно обработать ваш запрос. Убедитесь, что имя и значение подходят для параметра xmlData.‹/message›‹/error›‹/response› - person user2235952; 02.04.2013
comment
как я могу зафиксировать реальное значение UrlFetchApp.fetch(url,options)? - person user2235952; 02.04.2013
comment
@user2235952 user2235952 Я пренебрег необходимостью кодировать XML, см. обновленный код. Невозможно увидеть, что будет отправлено в zoho из облака серверов GAS. Если у вас есть собственный веб-сервер, вы можете изменить параметр URL, чтобы отправить HTTP-запрос туда, а затем захватить трафик на своем сервере. - person Mogsdad; 02.04.2013
comment
@user2235952 Я нашел этот пост, в котором описывается изменение выборки GAS, чтобы она маскировалась под браузер - это было опубликовано несколько лет назад, но может иметь значение. - person Mogsdad; 02.04.2013