Как изменить параметр актера Apify через API - PullRequest
1 голос
/ 03 апреля 2020

Я хочу вызвать актера Apify и указать значение параметра через вызов API Apify.

Актором является скребок результатов поиска Google, расположенный здесь .

Здесь документы говорят , чтобы использовать queries в качестве имени свойства объекта в полезной нагрузке вызова API.

В следующей таблице приведены спецификации поля INPUT субъекта, определенные его входной схемой. Эти поля могут быть [...] предоставлены в объекте JSON при запуске актера с использованием API. Подробнее читайте в документах.

...

Поисковые запросы или URL-адреса

Поисковые запросы Google (например, еда в Нью-Йорке C) и / или полные URL (например, https://www.google.com/search?q=food+NYC).

Введите по одному элементу в строке.

Необязательно Введите: String

JSON пример
"queries": "Hotels in NYC
  Restaurants in NYC
  https://www.google.com/search?q=restaurants+in+NYC"

После запуска кода скрипта Google Apps я ожидаю увидеть следующее изменение параметра searchQueries.term.

Apify - то, что я ожидаю увидеть
"searchQuery": {
  "term": "Banks in Phoenix", // what I am trying to change to by API call
  // [...]
},

Но на самом деле я получаю то же значение параметра, которое существовало в прошлый раз, когда я запускал актера вручную.

Apify - что я на самом деле вижу
"searchQuery": {
  "term": "CPA firms in Newark", // remaining from last time I ran the actor manually
  // [...]
},

Вот код, который я запускаю из скрипта Google Apps.

Code.gs
const runSearch = () => {
  const apiEndpoint= `https://api.apify.com/v2/actor-tasks/<MY-TASK-NAME>/run-sync?token=<MY-TOKEN>`
  const formData = {
    method: 'post',
    queries: 'Banks in Phoenix',
  };
  const options = {
    body: formData,
    headers: {
      'Content-Type': 'application/json',
    },
  };
  UrlFetchApp.fetch(apiEndpoint, options,);
}

Что я делаю не так?

1 Ответ

0 голосов
/ 07 апреля 2020

Вам не хватает свойства payload в объекте request.

Изменение:
queries: 'Banks in Phoenix',
на:
payload: {
  queries: 'Banks in Phoenix',
}
Code.gs
const runSearch = () => {
  const apiEndpoint= `https://api.apify.com/v2/actor-tasks/<MY-TASK-NAME>/run-sync?token=<MY-TOKEN>`
  const formData = {
    method: 'post',
    payload: {
      queries: 'Banks in Phoenix',
    },
  };
  const options = {
    body: formData,
    headers: {
      'Content-Type': 'application/json',
    },
  };
  UrlFetchApp.fetch(apiEndpoint, options,);
}
...