Search code examples
javascriptgoogle-apigoogle-drive-apigoogle-api-js-client

google drive api v3 update description


google drive api v3

I need to change the description of an existing object. How do I change just that, leaving the rest unchanged?

I am doing by analogy with python. I get the file metadata, add the "description" line to it and execute update. There are no errors, the description simply does not change

I don't know much about js, I will be glad if you can help me.

thanks

function updateFile(fileId) {

  var request = gapi.client.drive.files.get({
    'fileId': fileId
  });
  request.execute(function(resp) {
    var data = resp;
    //data = data['result']
    data['description'] = "433434"
  });

  var fileMetadata = data;

  const boundary = '-------314159265358979323846';
  const delimiter = "\r\n--" + boundary + "\r\n";
  const close_delim = "\r\n--" + boundary + "--";

  var reader = new FileReader();
  reader.readAsBinaryString(fileData);
  reader.onload = function(e) {
    var contentType = fileData.type || 'application/octet-stream';
    // Updating the metadata is optional and you can instead use the value from drive.files.get.
    var base64Data = btoa(reader.result);
    var multipartRequestBody =
      delimiter +
      'Content-Type: application/json\r\n\r\n' +
      JSON.stringify(fileMetadata) +
      delimiter +
      'Content-Type: ' + contentType + '\r\n' +
      'Content-Transfer-Encoding: base64\r\n' +
      '\r\n' +
      base64Data +
      close_delim;

    var request = gapi.client.request({
      'path': '/upload/drive/v3/files/' + fileId,
      'method': 'PATCH',
      'params': {'uploadType': 'multipart', 'alt': 'json'},
      'headers': {
        'Content-Type': 'multipart/mixed; boundary="' + boundary + '"'
      },
      'body': multipartRequestBody
    });
    if (!callback) {
      callback = function(file) {
        console.log(file)
      };
    }
    request.execute(callback);
  };
}

Solution

  • Thank you all, I figured out my problem. Here is the code, it works for me)

    function updateFile(fileId) {
        var request = gapi.client.drive.files.get({
          'fileId': fileId
        });
        request.execute(function(resp) {
          fileMetadata = resp;
          fileMetadata['description'] = "new_description";
          delete fileMetadata.id;
          var request = gapi.client.request({
            'path': '/drive/v3/files/' + fileId,
            'method': 'PATCH',
            'body': fileMetadata});
          request.execute(function(resp) {
          });
        })
      }