是否可以通过API下载,修改和上传Google文档的JSON表示?
我正在尝试编写服务器端应用程序来执行此操作。根据Google文档,我指的是根据https://docs.google.com建立富文本编辑功能的文件。
据我所知,RealTime API应该允许我下载带有GET请求的doc的json表示,并上传带有PUT请求的新JSON文件。从文档中听起来很理想。但是,GET请求的响应在数据字段中包含null
。我知道这是因为我的OAuth2.0 app is not the same app that created the document。如果我希望文件与其他任何Google文档(如上所述)一样对待,我不确定是否/如何解决这个问题。
Drive API允许我下载带有GET request的文件,但支持的mime类型不包含JSON。我知道我可以尝试转换它们(例如通过像优秀的pandoc这样的库)但是这需要有损且不可预测的处理以试图猜测Google的文档表示可能是通过例如解析MS Word文档(ew)。
有没有办法直接导入&在谷歌自己的JSON表示中导出文档?
答案 0 :(得分:0)
您可能希望尝试使用名为Realtime API的未经身份验证的模式中的in-memory mode,这样您无需任何配置或登录即可开始使用API。
要构建未经身份验证的应用,您可以访问并尝试Google Realtime API Quickstart中给出的步骤。您只需将以下代码复制到新文件中,然后在浏览器中打开即可。
<!DOCTYPE html>
<html>
<head>
<title>Google Realtime Quickstart</title>
<!-- Load Styles -->
<link href="https://www.gstatic.com/realtime/quickstart-styles.css" rel="stylesheet" type="text/css"/>
<!-- Load the Realtime API JavaScript library -->
<script src="https://apis.google.com/js/api.js"></script>
</head>
<body>
<main>
<h1>Realtime Collaboration Quickstart</h1>
<p>Welcome to the quickstart in-memory app!</p>
<textarea id="text_area_1"></textarea>
<textarea id="text_area_2"></textarea>
<p>This document only exists in memory, so it doesn't have real-time collaboration enabled. However, you can persist it to your own disk using the model.toJson() function and load it using the model.loadFromJson() function. This enables your users without Google accounts to use your application.</p>
<textarea id="json_textarea"></textarea>
<button id="json_button" class="visible">GetJson</button>
</main>
<script>
// Load the Realtime API, no auth needed.
window.gapi.load('auth:client,drive-realtime,drive-share', start);
function start() {
var doc = gapi.drive.realtime.newInMemoryDocument();
var model = doc.getModel();
var collaborativeString = model.createString();
collaborativeString.setText('Welcome to the Quickstart App!');
model.getRoot().set('demo_string', collaborativeString);
wireTextBoxes(collaborativeString);
document.getElementById('json_button').addEventListener('click', function(){
document.getElementById('json_textarea').value = model.toJson();
});
}
// Connects the text boxes to the collaborative string.
function wireTextBoxes(collaborativeString) {
var textArea1 = document.getElementById('text_area_1');
var textArea2 = document.getElementById('text_area_2');
gapi.drive.realtime.databinding.bindString(collaborativeString, textArea1);
gapi.drive.realtime.databinding.bindString(collaborativeString, textArea2);
}
</script>
</body>
</html>
希望有所帮助!