0

Google API NodeJS clientを使用してドライブにGoogle Apps Scriptをアップロードしようとしています。私はドキュメントの指示に従っていますが、ファイルがドライブにアップロードされると、アプリスクリプトとしてではなくプレーンテキストとしてアップロードできます。 READMEのGoogleドライブAPI(NodeJS)を使用してGoogle Appsスクリプトをアップロードする方法

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以外のものをアップロードする方法を指定しません。

私はtext/plain以外にmediaオブジェクトにmimeTypeを変更した場合、私は、次の(無益)エラーを取得:ドライブがAppsスクリプトやないとしてこれを認識するために取得する方法について

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

任意のアイデアをプレーンテキストファイルですか?あるいは、NodeJSクライアント側でこれが壊れていますか?

+0

は[ 'upload.js']で、*ノード・グーグル・アプリをスクリプトで' sendToGoogle'機能*を見てください(https://github.com/danthareja/node-google-apps-script/blob/master/lib/commands/upload.js)ファイル。 Drive v2を使用していますが、いくつかのオプションがあります。 – Bardy

+0

@Bardyは、そのファイルに基づいてMIMEタイプの組み合わせを試しましたが、同じ400のエラーコードが残っています。私はそれをgoogle-docとしてアップロードしてgoogle-app-scriptに変換する必要があるかもしれないと思う。私は今それを試してみるつもりです。 – Brodan

答えて

0

これは明らかにgoogle-api-nodejs-clientのバグですが、ライブラリのメンテナーがドキュメントができなかった場所で私を助けることができました。以下は、あなたが適切にGoogleドライブに.gsファイルをアップロードできるようになります:

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) { 
    // ... 
}); 
関連する問題