web-dev-qa-db-fra.com

Erreur inattendue sur urlfetchapp.fetch dans le script Google Apps à l'aide de l'authentification de base

J'ai le code suivant dans le script Google Apps qui récupère les données CSV à partir d'une page Web via HTTP à l'aide de l'authentification de base et la place dans une feuille de calcul:

CSVImport.gs

function parseCSVtoSheet(sheetName, url)
{
  // Credentials
  var username = "myusername";
  var password = "mypassword";
  var header = "Basic " + Utilities.base64Encode(username + ":" + password);
  
  // Setting the authorization header for basic HTTP authentication
  var options = {
    "headers": {
      "Authorization": header
    }
  };
  
  // Getting the ID of the sheet with the name passed as parameter
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getSheetByName(sheetName);
  var sheetId = sheet.getSheetId();
  
  // Getting the CSV data and placing it into the spreadsheet
  var csvContent = UrlFetchApp.fetch(url, options).getContentText();
  var resource = {requests: [{pasteData: {data: csvContent, coordinate: {sheetId: sheetId}, delimiter: ","}}]};
  Sheets.Spreadsheets.batchUpdate(resource, spreadsheet.getId());
}

Cela a fonctionné jusqu'à récemment où je reçois au hasard l'erreur suivante sur la ligne UrlFetchApp.fetch:

Exception: Unexpected error: http://www.myurl.com/data/myfile.csv (line 21, file "CSVImport")

J'ai essayé:

  • Mettre les informations d'identification directement dans l'URL au lieu d'un en-tête d'autorisation (j'ai reçu une erreur différente de dire "Informations de connexion interdites").
  • Encodant les informations d'identification à la base64 à droite lorsque je le transmettez dans l'objet en-tête (N'a pas fonctionné, même erreur).
  • Supprimer l'authentification tout à fait (de manière prévisible, j'ai reçu une réponse 401 de la page HTTP).

Je ne sais pas quoi d'autre essai et pourquoi cela a soudainement cassé au hasard. Aucun conseil?

12
Step

Selon le n ° 346 du numéro de numéro officiel https://issuetracker.google.com/issues/175141974

hey gars j'ai trouvé une solution possible qui fonctionne pour moi essayer de saisir vide {} comme ça

Urlfetchapp.fetch (Apilink, {});

ça a fonctionné pour moi

J'ai essayé cela, et ça marche aussi pour moi. Fonctionne même lorsque vous utilisez "la nouvelle période d'exécution du script d'applications Powered by Chrome V8".

0
BaconCatBug