【问题标题】:Google Drive Api v3 how can I upload with google sheet formatting? 400 responseGoogle Drive Api v3 如何使用 Google 表格格式上传? 400 响应
【发布时间】:2016-12-13 11:25:52
【问题描述】:

我有一个可以工作的应用程序,但今天它决定中断,所以我认为 Google 已经做出了一些改变。 CSV 数据被传递给我的函数,然后上传文件并将其转换为谷歌表格格式(这就是它所做的)

我正在使用 JS,文档中没有关于如何使用 V3 进行操作的示例。我已经读过,您只需指定所需的 mimeType,API 将为您完成,而不是在客户端的请求参数中运行 'conver':true。

这里是它在文档中声明的地方 ->

https://developers.google.com/drive/v3/web/migration#other_changes

现在通过在资源正文中设置适当的目标 mimeType 来请求导入到 Google Docs 格式,而不是指定 ?convert=true。

这是我现在正在查看的代码。每当我将 mimeType 保留为 'application/vnd.google-apps.spreadsheet' 时,它都会返回 400 error

gapiService.uploadCSVToGoogleSheet =function(data, sheetTitle) {
      // create file


      cnsl("in gapiService.uploadCSVToGoogleSheet()!!!", "start");


      gapi.client.load('drive', 'v3',

         upload

      );

      function upload (){

          var fileData = new Blob(data, {type: "text/csv-creation", fileName: "testName"});

          const boundary = '-------314159265358979323846';
          const delimiter = "\r\n--" + boundary + "\r\n";
          const close_delim = "\r\n--" + boundary + "--";

          var reader = new FileReader();
          reader.readAsBinaryString(fileData);

          reader.onload = function (e) {
              console.log("loaded reader ");

              console.log(contentType);
              var metadata = {
                  'name': sheetTitle + "-" + getCurrentDate(),
                  'mimeType': 'application/vnd.google-apps.spreadsheet'
              };

              var base64Data = btoa(reader.result);
              var multipartRequestBody =
                  delimiter +
                  'Content-Type: application/json\r\n\r\n' +
                  JSON.stringify(metadata) +
                  delimiter +
                  'Content-Type: ' + contentType + '\r\n' +
                  'Content-Transfer-Encoding: base64\r\n' +
                  '\r\n' +
                  base64Data +
                  close_delim;

              // POST INFO
              var request = gapi.client.request({
                  'path': '/upload/drive/v3/files',
                  'method': 'POST',
                  'params': {

                         'uploadType': 'multipart'
                      //  'convert': true
                 },

                  'headers': {
                      'Content-Type': 'multipart/mixed; boundary="' + boundary + '"'
                  },
                  'body': multipartRequestBody
              });

              request.execute(gapiService.afterFileInsert);

          } //endof reader onload

      }



      function getCurrentDate() {
          console.log("in get GetCurrentDATE");
          var today = new Date();
          var dd = today.getDate();
          var mm = today.getMonth() + 1; //January is 0!
          var yyyy = today.getFullYear();

          if (dd < 10) {
              dd = '0' + dd
          }

          if (mm < 10) {
              mm = '0' + mm
          }

          today = mm + '_' + dd + '_' + yyyy;
          return today;
      };

      // console.log(fileData, null, 0);

  };

`

【问题讨论】:

    标签: javascript google-api google-drive-api google-client google-api-js-client


    【解决方案1】:

    如果未提供必填字段或参数、提供的值无效或提供的字段组合无效,您会收到error 400

    尝试将重复的父项添加到云端硬盘项目时,也可能会引发此错误。尝试添加会在目录图中创建循环的父级时也可能会抛出它。

    有关如何在 Google 云端硬盘中上传 Google 表格格式的更多信息,请查看以下相关 SO 问题:

    【讨论】:

      猜你喜欢
      • 2017-10-16
      • 1970-01-01
      • 2012-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多