0

Я пытаюсь использовать Google API NodeJS client для загрузки сценария Google Apps на свой диск. Я следую указаниям в документах, но когда файл загружается на мой диск, я могу загрузить его только как обычный текст, а не как скрипт приложений.Как загрузить скрипт Google Apps с помощью API-интерфейсов Google (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 часть README не определяет, как загрузить что-либо иное, чем PNG.

Если изменить mimeType в media объекта к чему-либо, кроме text/plain я получаю следующее (неинформативное) ошибка:

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

Любые идеи о том, как получить Drive признать это как Apps Script и не простой текстовый файл? Или это что-то сломалось на конце клиента NodeJS?

+0

взглянуть на 'sendToGoogle' функции в * узле-Google-приложений-скрипт *, в [' upload.js'] (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. Я собираюсь попробовать это сейчас. – Brodan

ответ

0

Так что это, по-видимому, ошибка с google-api-nodejs-client, но сопровождающий библиотеки смог помочь мне, где документация не могла. Следующее позволит вам загрузить .gs файл в Google 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) { 
    // ... 
});