Google Drive API V3 (javascript) 更新文件内容

Google Drive API V3 (javascript) update file contents(Google Drive API V3 (javascript) 更新文件内容)
本文介绍了Google Drive API V3 (javascript) 更新文件内容的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我想使用 Google Drive API V3 (javascript) 更新 Google 文档的内容:

I want to update the contents of a Google doc using the Google Drive API V3 (javascript):

https://developers.google.com/drive/v3/reference/文件/更新

我能够更新文件元数据(例如名称),但文档不包含实际文件内容的补丁语义.有没有办法在 gapi.client.drive.files.update 请求中将 JSON.stringify() 值作为参数传递:

I'm able to update the file metadata (such as the name) but the documentation doesn't include patch semantics for the actual file content. Is there a way to pass a JSON.stringify() value as a param in the gapi.client.drive.files.update request:

var request = gapi.client.drive.files.update({
    'fileId': fileId,
    'name' : 'Updated File Name',
    'uploadType': 'media',
    'mimeType' : 'application/vnd.google-apps.document'
  });

var fulfilledCallback = function(fulfilled) { 
    console.log("Update fulfilled!", fulfilled);
};
var rejectedCallback = function(rejected) { 
    console.log("Update rejected!", rejected);
};

request.then(fulfilledCallback, rejectedCallback)

推荐答案

有两个问题:

  1. JavaScript 客户端库不支持媒体上传.
  2. Google 文档文件没有原生文件格式.

您可以通过在 XHR 之上编写自己的上传功能来解决问题 #1.以下代码应该适用于大多数现代网络浏览器:

You can work around issue #1 by writing your own upload functionality built on top of XHR. The following code should work on most modern web browsers:

function updateFileContent(fileId, contentBlob, callback) {
  var xhr = new XMLHttpRequest();
  xhr.responseType = 'json';
  xhr.onreadystatechange = function() {
    if (xhr.readyState != XMLHttpRequest.DONE) {
      return;
    }
    callback(xhr.response);
  };
  xhr.open('PATCH', 'https://www.googleapis.com/upload/drive/v3/files/' + fileId + '?uploadType=media');
  xhr.setRequestHeader('Authorization', 'Bearer ' + gapi.auth.getToken().access_token);
  xhr.send(contentBlob);
}

要解决问题 #2,您可以向云端硬盘发送 Google Docs 可以从中导入的文件类型,例如 .txt、.docx 等.以下代码使用上述函数使用纯文本更新 Google Doc 的内容:

To work around issue #2 you can send Drive a file type that Google Docs can import from, such .txt, .docx, etc. The following code uses the function above to update the content of a Google Doc using plain text:

function run() {
  var docId = '...';
  var content = 'Hello World';
  var contentBlob = new  Blob([content], {
    'type': 'text/plain'
  });
  updateFileContent(fileId, contentBlob, function(response) {
    console.log(response);
  });
}

这篇关于Google Drive API V3 (javascript) 更新文件内容的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

opening html from google drive(从谷歌驱动器打开 html)
Google apps script get range of bytes from binary file(谷歌应用程序脚本从二进制文件中获取字节范围)
Sending Multiple attachments with Google Script from Google Drive(使用 Google 脚本从 Google Drive 发送多个附件)
Distributing Google Apps Scripts for Sheets in your company network(在您的公司网络中分发适用于表格的 Google Apps 脚本)
Upload file to my google drive from anyone using javascript(使用 javascript 将文件从任何人上传到我的谷歌驱动器)
quot;Shared Drivequot; support in Google Apps Script(“共享驱动器Google Apps 脚本中的支持)