0

我正在嘗試使用Google API NodeJS client將Google Apps腳本上傳到我的驅動器。我遵循文檔中的指示,但是當文件上傳到我的驅動器時,我只能以純文本格式上傳文件,而不能將其作爲Apps腳本進行上傳。如何通過Google Drive API上載Google Apps腳本(NodeJS)

function uploadAppScript(auth) { 
return new Promise(function(resolve, reject) { 
    var drive = google.drive('v3') 
    drive.files.create({ 
    auth: auth, 
    resource: { 
     name: 'myscript', 
     mimeType: 'application/vnd.google-apps.script' 
    }, 
    media: { 
     mimeType: 'text/plain', 
     body: fs.createReadStream('src/myscript.gs') 
    }, 
    }, function(err, result){ 
     ... //not relevant 
    }) 
}) 

}

自述的media uploads部分沒有規定如何上傳比PNG等東西。

如果我在media對象改變mimeTypetext/plain其他任何我得到以下(無信息)錯誤:

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

如何獲得驅動承認這是Google Apps腳本並沒有任何想法一個純文本文件?或者這是在NodeJS客戶端結束了嗎?

+0

看一看在*節點谷歌 - 應用程序 - 腳本'sendToGoogle'功能*,在['upload.js'] (https://github.com/danthareja/node-google-apps-script/blob/master/lib/commands/upload.js)文件。它使用Drive v2,但應該提供一些選項。 – Bardy

+0

@Bardy根據該文件嘗試了一堆MIME類型的組合,但仍得到相同的400錯誤代碼。我想我可能需要將其上傳爲谷歌文檔,然後將其轉換爲谷歌應用程序腳本。我現在要試一試。 – Brodan

回答

0

所以這顯然是一個google-api-nodejs-client的錯誤,但圖書館的維護人員能夠幫助我在文檔無法找到的地方。下面將允許你上傳.gs文件,谷歌Drive正確:

drive.files.create({ 
    resource: { 
    name: 'myscript.gs', 
    mimeType: 'application/vnd.google-apps.script+json' 
    }, 
    media: { 
    mimeType: 'application/vnd.google-apps.script+json', 
    body: JSON.stringify({ 
     files: [ 
     { 
      source: fs.readFileSync('src/myscript.gs', { encoding: 'utf-8' }), 
      name: 'myscript', 
      type: 'server_js' 
     } 
     ] 
    }) 
    } 
}, function (err, file) { 
    // ... 
}); 
相關問題