UrlFetchApp.fetch(URL).getContentText() внезапно не работает, несмотря на отсутствие изменений

#google-apps-script #google-sheets #google-sheets-api #google-apps-script-api

#google-apps-script #google-sheets #google-sheets-api #google-apps-script-api

Вопрос:

У меня есть очень простой скрипт Google, который извлекает CSV-файл из Интернета и помещает его в документ Google. Это еще не все до и после, но здесь возникает проблема:

   var csvUrl = "https://data.cdc.gov/resource/muzy-jte6.csv?$limit=6000";
  var csvContent = UrlFetchApp.fetch(csvUrl).getContentText();
 

Он запускается автоматически каждую ночь и работает без проблем в течение последних шести месяцев. Внезапно он больше не работает. Редактор сценариев не указывает причины. Ссылка абсолютно верна и все еще работает. Я попробовал это с другой CSV-ссылкой с другого веб-сайта, и у него была та же проблема.

Когда я запускаю скрипт, все, что он говорит, это:

Исключение: неожиданная ошибка: https://data.cdc.gov/resource/muzy-jte6.csv ?$limit=6000 (строка 8, файл «Code») Отклонить

Как я уже упоминал, скрипт работал безупречно более 150 раз с лета, и он не изменился, ни документ не изменился, ни ссылка на API. Я только предполагаю, что в моей учетной записи Google произошли некоторые изменения в разрешениях, но приложение по-прежнему имеет все необходимые разрешения из моей учетной записи Google.

Пожалуйста, помогите мне понять, почему скрипт больше не работает и как я могу заставить его снова работать.

Комментарии:

1. Итак, вы получили свой ответ. На данный момент решения нет. О проблеме сообщалось как об ошибке, и разработчики Google работают над этим. Я бы посоветовал вам отметить проблему, чтобы сделать ее еще более популярной, чем она есть, и вы также можете получать уведомления, когда она будет решена.

2. @Marios Я хотел бы предложить текущий обходной путь для этого. Может ли этот вопрос быть открыт повторно?

3. @Cooper Я хотел бы предложить текущий обходной путь для этого. Может ли этот вопрос быть открыт повторно?

4. @Tanaike Я думаю, что лучше иметь 1 канонический поток (Q / A) для всех обходных путей. Было бы лучше добавить ответ и в этот повторяющийся поток, чтобы другие пользователи, ссылающиеся на этот поток, также могли извлечь выгоду?

5. @Tanaike Это здорово. Спасибо

Ответ №1:

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

  1. Введите формулу =IMPORTDATA(URL) .
  2. Извлеките значения из таблицы.

Когда приведенный выше поток отражается на вашем URL https://data.cdc.gov/resource/muzy-jte6.csv?$limit=6000 , он становится следующим.

Пример сценария:

 function myFunction() {
  const url = "https://data.cdc.gov/resource/muzy-jte6.csv?$limit=6000";  // This is your URL.

  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
  sheet.clear();
  const range = sheet.getRange("A1");
  range.setFormula(`=IMPORTDATA("${url}")`);
  SpreadsheetApp.flush();
  const values = sheet.getDataRange().getValues();
  range.clear();
  console.log(values)
}
 
  • В этом примере сценария используется «Sheet1». Поэтому, пожалуйста, измените его для вашей реальной ситуации.
  • При запуске вышеупомянутого скрипта значения из URL извлекаются в виде 2-мерного массива для values .
  • В этом ответе я использовал IMPORTDATA . Но для каждой ситуации могут подойти другие функции. В этом случае, пожалуйста, проверьте их.

Примечание:

  • Это текущий обходной путь. Поэтому, когда эта проблема была устранена, я думаю, что вы можете использовать свой оригинальный скрипт.

Ссылки: