Google Drive API v3を使用してコンテンツを含むファイルを作成したい。 OAuth=で認証し、Drive APIをロードしました。次のようなステートメントが機能します(ただし、コンテンツのないファイルが生成されます):
gapi.client.drive.files.create({
"name": "settings",
}).execute();
残念ながら、コンテンツを含むファイルを作成する方法がわかりません。 Drive API v3を使用したJavaScriptの例が見つかりません。渡す必要のある特別なパラメーターはありますか?
簡単にするために、作成したファイルのコンテンツであるはずのJSON形式の '{"name": "test"}'のような文字列があるとします。
これがgapi.client.drive
のソリューションです。
var parentId = '';//some parentId of a folder under which to create the new folder
var fileMetadata = {
'name' : 'New Folder',
'mimeType' : 'application/vnd.google-apps.folder',
'parents': [parentId]
};
gapi.client.drive.files.create({
resource: fileMetadata,
}).then(function(response) {
switch(response.status){
case 200:
var file = response.result;
console.log('Created Folder Id: ', file.id);
break;
default:
console.log('Error creating the folder, '+response);
break;
}
});
connect/authorise に 以下のスコープ のいずれかを指定する必要があります
https://www.googleapis.com/auth/drive
https://www.googleapis.com/auth/drive.file
編集:mimeType
をapplication/vnd.google-apps.folder
からサポートされているいずれかの google mime types に変更することで、Googleファイル(ドキュメント、シートなど)を作成できます。 [〜#〜]ただし[〜#〜]、現在のところ、作成したファイルにコンテンツをアップロードすることはできません。
ファイルをアップロードするには、 @ Geminusが提供するソリューション を使用します。テキストファイルまたはcsvファイルをアップロードし、そのコンテンツタイプをそれぞれgoogle docまたはgoogle sheetに設定できることに注意してください。Googleはそれを変換しようとします。私はこれをテキスト-> docでテストしましたが、動作します。
残念ながら、GoogleドライブAPIのみを使用した回答は見つかりませんでした。代わりに、Gerardoのコメントに従って、GoogleリクエストAPIを使用しました。以下は、Googleドライブにファイルをアップロードする関数です。
var createFileWithJSONContent = function(name,data,callback) {
const boundary = '-------314159265358979323846';
const delimiter = "\r\n--" + boundary + "\r\n";
const close_delim = "\r\n--" + boundary + "--";
const contentType = 'application/json';
var metadata = {
'name': name,
'mimeType': contentType
};
var multipartRequestBody =
delimiter +
'Content-Type: application/json\r\n\r\n' +
JSON.stringify(metadata) +
delimiter +
'Content-Type: ' + contentType + '\r\n\r\n' +
data +
close_delim;
var request = gapi.client.request({
'path': '/upload/drive/v3/files',
'method': 'POST',
'params': {'uploadType': 'multipart'},
'headers': {
'Content-Type': 'multipart/related; boundary="' + boundary + '"'
},
'body': multipartRequestBody});
if (!callback) {
callback = function(file) {
console.log(file)
};
}
request.execute(callback);
}