API GCS JSON делает запрос на загрузку объекта в неверный проект - PullRequest
0 голосов
/ 30 января 2020

Я создаю продукт Google App Script, который загружает электронную таблицу, преобразованную в csv, в Google Cloud Storage. Когда я делаю запрос, я получаю 403 ответ с описанием:

accessNotConfigured: Project [12 digit number] is not found and cannot be used for API calls. If it is recently created....

Здесь идентификатор проекта неправильный (также я действительно не нашел проект с таким идентификатором). Но когда я выполняю запросы GET (списки блоков, списки объектов в корзине, объект загрузки), все работает как положено.

Вот мой код:

function myFunction() {
  var spreadsheet = SpreadsheetApp.getActive();
  var csv = convertRangeToCsv(spreadsheet)
  var blob = Utilities.newBlob(csv, "text/csv;charset=utf-8;", "Test_file.csv");
  var bytes = blob.getBytes();
  var token =  ScriptApp.getOAuthToken()
  var url = 'https://storage.googleapis.com/upload/storage/v1/b/bucket1/o?uploadType=media&name=Test_file.csv'


  //List buckets
  /*var response = UrlFetchApp.fetch("https://storage.googleapis.com/storage/v1/b?project=my-project", {
    method: "GET",
    headers: {
      'Authorization': 'Bearer ' + token
    }
  });*/

  //Download file
  /*var response = UrlFetchApp.fetch("https://storage.googleapis.com/storage/v1/b/bucket1/o/test.sh?alt=media", {
    method: "GET",
    headers: {
      'Authorization': 'Bearer ' + token
    }
  });*/

  //Upload file
  var response = UrlFetchApp.fetch(url, {
    method: "POST",
    contentLength: bytes.length,
    contentType: "text/plain",
    muteHttpExceptions: true,
    payload: bytes,
    headers: {
      'Authorization': 'Bearer ' + token
    }
  });

  //List Files
  /*var response = UrlFetchApp.fetch("https://storage.googleapis.com/storage/v1/b/bucket1/o", {
    method: "GET",
    headers: {
      'Authorization': 'Bearer ' + token
    }
  });

  var fileContent = response.getBlob().getDataAsString();
  */

  var result = JSON.parse(response.getContentText());
  Logger.log(JSON.stringify(result, null, 2));
}

Я уже пробовал добавить заголовок X-Goog-User-Project с правильным идентификатором проекта, но это не поможет.

Любой совет приветствуется!

...