#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, значения могут быть извлечены. В этом случае в качестве текущего обходного пути я использовал следующий поток.
- Введите формулу
=IMPORTDATA(URL)
. - Извлеките значения из таблицы.
Когда приведенный выше поток отражается на вашем 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
. Но для каждой ситуации могут подойти другие функции. В этом случае, пожалуйста, проверьте их.
Примечание:
- Это текущий обходной путь. Поэтому, когда эта проблема была устранена, я думаю, что вы можете использовать свой оригинальный скрипт.