0

我使用谷歌雲端硬盤API V3來管理我的谷歌驅動器使用的是Node.js和谷歌API-的NodeJS客戶端v12.0.0(http://google.github.io/google-api-nodejs-client/創建一個谷歌文檔與谷歌雲端硬盤API和Node.js的

當我嘗試創建一個簡單的文本/普通文檔時,一切正常。但是,當我嘗試創建Google文檔時,Google Drive API會返回400錯誤消息「錯誤請求」。

/** 
    * Create file on Google Drive 
    * https://developers.google.com/drive/v3/reference/files/create 
    */ 
    CreateFile: (googleapi, oauth2Client, fileName, fileContent, fileType) => { 
    const DRIVE = googleapi.drive({ version: 'v3', auth: oauth2Client }); 

    return new Promise((resolve, reject) => { 
     console.log('fileType:',fileType); 
     DRIVE.files.create({ 
     resource: { 
      name: fileName, 
      mimeType: fileType 
     }, 
     media: { 
      mimeType: fileType, 
      body: fileContent 
     } 
     }, (err, result) => { 
     if(err) { 
      reject(err); 
     } 
     else { 
      resolve(result); 
     } 
     }); 
    }); 

當變量「fileType」的值是「text/plain」時,一切正常。但是當我把「application/vnd.google-apps.document」放到這個值時,我得到了一個400錯誤。

一些解決方案? :)

回答

0

從Drive API的documentation,error 400: Bad Request可能表示未提供必填字段或參數,提供的值無效或提供字段的組合無效。

嘗試將重複的父級添加到Drive項目時可能會引發此錯誤。當試圖添加一個可以在目錄圖中創建一個循環的父代時,它也會被拋出。

{ 
"error": { 
"errors": [ 
{ 
"domain": "global", 
"reason": "badRequest", 
"message": "Bad Request" 
} 
], 
"code": 400, 
"message": "Bad Request" 
} 
} 

因此,在您的情況下,您在字段或參數中提供的值無效。

檢查此SO問題和一些文檔以瞭解有關您的問題的更多信息。

0

也許它可以幫助你,我真的使用V4谷歌雲端硬盤API的

 var fileMetadata = { 
      'name': 'Project plan', 
      'mimeType': 'application/vnd.google-apps.document' 
     }; 

     drive.files.create({ 
      resource: fileMetadata, 
      fields: '*', 
      auth: jwtClient 
     }, function (err, file) { 
      if (err) { 
       return global.triggerError(req, res, err); 
      } 

      drive.permissions.create({ 
       resource: { 
        'type': 'anyone', 
        'role': 'writer' 
       }, 
       fileId: file.id, 
       fields: 'id', 
       auth: jwtClient 
      }, function (err, permission) { 
       if (err) { 
        return global.triggerError(req, res, err); 
       } 

       callback(file); 
      }); 
     });