UrlFetchApp Token Авторизация - PullRequest
0 голосов
/ 08 марта 2020

Я пытаюсь получить URL-адрес с помощью GScript UrlFetchApp. URL требует, чтобы ключ API токена был передан в заголовке запроса.

url = 'https://freshsales.io/search?q=abc';

var options = {
    'method' : 'get',
    'headers':{
      'Authorization': "Token token=XYZ"
    }
};
var response = UrlFetchApp.fetch(url, options);

Это не приводит к ожидаемому ответу, как показано ниже:

Freshsales

окно NREUM || (NREUM = {}); NREUM.info = { "маяк": "bam.nr-данные net", "errorBeacon": "bam.nr-данные * * тысяча двадцать-одна", "LicenseKey" : "", "applicationID": "33348835,33348834", "actionName ":" e11YEBQJXVlXER1LUllAVQxJFVRUQABaF0RdU0QHDg == "," queueTime ": 1," applicationTime ": 30," agent ":" "} * 1008 ( || (NREUM = {})) loader_config = {xpid: "VQcDVl5UDxADV1JWDwkEUw ==", LicenseKey: "", ApplicationID: "33348835"};. window.NREUM || (NREUM = {}), __ nr_require = функция (т , n, e) {function r (e) {if (! n [e]) {var o = n [e] = {exports: {}}; t [e] [0] .call (o.exports, function (n) {var o = t [e] [1] [n]; return r (o || n)}, o, o.exports)} return n [e] .exports} if ("function" = = typeof __nr_require) возвращать __nr_require; для (var o = 0; o0 && (p- = 1)}), s.on ("internal-error", function (t) {i ("ierr", [t, c .now () ,! 0])})}, {}], 3:.! [функцию (т, п, е) {T ( "загрузчик") features.ins = 0}, {}], 4 : [функция (т, п, е) {functi на r (t) {} if (window.performance && window.performance.timing && window.performance.getEntriesByType) {var o = t ("ee"), i = t ("handle"), a = t (9), s = т (8), с = "learResourceTimings", е = "addEventListener", и = "resourcetimingbufferfull", D = "bstResource", L = "ресурс", P = "- пуск", Н = "- конец", м = "Fn" + р, ш = "Fn" + H, V = "bstTimer", г = "PushState", у = т ( "загрузчик");! y.features.stn = 0, т (7), «addEventListener» в окне && t (5); var x = NREUM.o.EV; o.on (m, function (t, n) {var e = t [0]; e instanceof x && (this.bstStart = y.now) ())}), o.on (w, function (t, n) {var e = t [0]; e instanceof x && i ("bst", [e, n, this.bstStart, y.now ()] )}), a.on (м, функция (т, п, е) {this.bstStart = y.now (), this.bstType = е}), a.on (ш, функции (т, п) { I (V, [п, this.bstStart, y.now (), this.bstType])}), s.on (м, функция () {this.bstStart = y.now ()}), s.on (ш, функции (т, п) {I (V, [п, this.bstStart, y.now (), "requestAnimationFrame"])}), o.on (г + р, функция (т) {это. время = y.now (), this.startPath = location.pathname + location.hash}), o.on (г + Н, функция (т) {я ( "bstHist", [location.pathname + location.ha sh, this.startPath, this.time])}), f in wind ow.performance && (window.performance [ "c" + с] window.performancef: window.performancef), documentf, documentf, documentf}}, {}], 5: [функция (т, п, е) { function r (t) {for (var n = t; n &&! n.hasOwnProperty (u);) n = Object.getPrototypeOf (n); n && o (n)} function o (t) {s.inPlace (t, [ u, d], "-", i)} функция i (t, n) {return t [1]} var a = t ("ee"). get ("events"), s = t ("wrap- function ") (a,! 0), c = t (" gos "), f = XMLHttpRequest, u =" addEventListener ", d =" removeEventListener "; n.exports = a," getPrototypeOf "в Object? (r ( документ), г (окно), г (f.prototype)): f.prototype.hasOwnProperty (и) && (O (окно), о (f.prototype)), a.on (и + "- старт", функция (t, n) {var e = t [1], r = c (e, "nr@wrapped", function () {function t () {if ("function" == typeof e.handleEvent) return e.handleEvent.apply (e, arguments)} var n = {object: t, "function": e} [typeof e]; вернуть n? s (n, "fn -", null, n.name || " анонимный "): е}); this.wrapped = т [1] = г}), a.on (d +" - старт», функция (т) {т [1] = this.wrapped || т [1] })}, {}], 6: [function (t, n, e) {function r (t, n, e) {var r = t [n]; "function" == typeof r && (t [n]) = функция () {var t = i (аргументы), n = { }; o.emit (e + "перед началом", [t], n); var a; n [m] && n [m] .dt && (a = n [m] .dt); var s = r.apply (this, t); return o.emit (e + "start", [t, a], s), s.then (function (t) {return o.emit (e + "end", [null, t], s), t}, function (t) {throw o.emit (e + "end", [t], s), t})})} var o = t ("ee"). get ("fetch") , i = t (22), a = t (21); n.exports = o; var s = window, c = "fetch -", f = c + "body -", u = ["arrayBuffer", "blob », "* * тысяча двадцать-шесть", "текст", "FormData"], д = s.Request, л = s.Response, р = s.fetch, ч = "прототипом", м = "nr@context"; д && л && р && (а (и, функция (т, п) {г (г [ч], п, е), г (л [ч], п, е)}), R (s, "выборка", * тысячу двадцать-семь *) , o.on (c + "end", function (t, n) {var e = this; if (n) {var r = n.headers.get ("content-length"); null! == r && (e .rxSize = r), o.emit (c + "done", [null, n], e)}, иначе o.emit (c + "done", [t], e)}))}, {}], 7 : [function (t, n, e) {var r = t ("ee"). get ("history"), o = t ("wrap-function") (r); n.exports = r; var i = window.history && && window.history.constructor window.history.constructor. прототип, а = window.history; я && && i.pushState i.replaceState && (а = я), o.inPlace (а, [ "PushState", "replaceState"], "-")}, {}], 8: [функция ( t, n, e) {var r = t ("ee"). get ("raf"), o = t ("wrap-function") (r), i = "equestAnimationFrame"; n.exports = r, o.inPlace (окно, [ "г" + г, "mozR" + I, "webkitR" + I, "MSR" + I], "RAF -"), r.On ( "RAF-старт", функция ( t) {t [0] = o (t [0], "fn -")})}, {}], 9: [function (t, n, e) {function r (t, n, e) { t [0] = a (t [0], "fn -", null, e)} функция o (t, n, e) {this.method = e, this.timerDuration = isNaN (t [1])? 0: + t [1], t [0] = a (t [0], "fn -", this, e)} var i = t ("ee"). Get ("timer"), a = t ( "обертка-функции") (я), S = "SetTimeout", с = "setInterval", е = "clearTimeout", U = "- старт", D = "-"; n.exports = я, а. Inplace (окно, [с, "setImmediate"], с + д), a.inPlace (окно, [с], с + д), a.inPlace (окно, [е, "clearImmediate"], е + d) , i.on (c + u, r), i.on (s + u, o)}, {}], 10: [function (t, n, e) {function r (t, n) {d. inPlace (n, ["onreadystatechange"], "fn -", s)} функция o () {var t = this, n = u.context (t); t.readyState> 3 &&! n.resolved && (n.resolved =! 0, u.emit ("xhr-resolved", [], t)), d.inPlace (t, g, "fn -", s)} функция i (t) {y.pu * 1 028 * (t), h && (b? B.then (a): w? W (a) :( E = -E, O.data = E))} function a () {for (var t = 0; t

Я тестировал то же самое с помощью python (код ниже), и он отлично работает.

url = "https://freshsales.io/search?q=abe"

payload = {}
headers = {
  'Authorization': 'Token token=XYZ'
}

response = requests.request("GET", url, headers=headers, data = payload)

Ответ от Python код:

[
    {
        "id": "1000705745",
        "name": "MKnight",
        "email": "mknight@xxx.gov",
        "owner": {
            "id": 1000002014,
            "name": "Tim"
        },
        "updated_at": "2020-02-13T04:57:29Z",
        "primary_sales_account_name": "City of XYZ",
        "type": "contact"
    } ]

Любой мысли о том, чего мне здесь не хватает?

1 Ответ

2 голосов
/ 09 марта 2020

Добавьте тип содержимого, который вы можете принять, чтобы принудительно вернуть возвращаемый тип содержимого с сервера:

headers:{
  Accept: "application/json",
  Authorization: "Token token=XYZ"
}
...