Исключение: слишком большой аргумент: значение Google Script - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь удалить веб-сайт и поместить значение в кеш, чтобы не достигнуть дневного лимита UrlFetchApp

Вот сценарий, который я сделал:

/**
 * Scrape URL, return whatever you choose with jquery-style selectors. 
 Dependency: cheeriogs, see https://github.com/fgborges/cheeriogs
 *
 * @param {url} valid start-url
 * @return result (array values)
 *
 * @customfunction
 */
function scrapercache(url) {
    var result = [];
    var description;
    var options = {
        'muteHttpExceptions': true,
        'followRedirects': false,
    };
  
var cache = CacheService.getScriptCache();
var properties = PropertiesService.getScriptProperties();

try {  
  let res = cache.get(url);

  if (!res) {
    // trim url to prevent (rare) errors
    url.toString().trim();
    var r = UrlFetchApp.fetch(url, options);
    var c = r.getResponseCode();

    // check for meta refresh if 200 ok
    if (c == 200) {
      var html = r.getContentText();
      cache.put(url, "cached", 21600);
      properties.setProperty(url, html);

      var $ = Cheerio.load(html); // make sure this lib is added to your project!

      // meta description
      if ($('meta[name=description]').attr("content")) {
        description = $('meta[name=description]').attr("content").trim();
      }
    }
  
    result.push([description]);    
  }
} 
catch (error) {
  result.push(error.toString());
} 
finally {
  return result;
}
 
}

но когда я вызываю такую ​​функцию:

=scrapercache("https://www.gurufocus.com/term/total_freecashflow/nyse:ABBV/Free-Cash-Flow")

, я получаю сообщение об ошибке:

Exception: argument too large: value 

Кто-нибудь может мне помочь? Спасибо :) Габриэль

1 Ответ

1 голос
/ 14 июля 2020

Как написано в официальной документации ,

Максимальная длина ключа составляет 250 символов. Максимальный объем данных, который может быть сохранен на ключ, составляет 100 КБ.

Если размер данных, помещенных в кэш, превышает любое из указанных выше ограничений, появляется ошибка

Исключение: показан слишком большой аргумент

. В вашем случае value превышает 100 КБ. Решением было бы кэшировать только необходимые данные или вообще не кэшировать, в зависимости от ваших требований c.

...