1

我正在处理 Google Javascript Client API 示例:

https://code.google.com/p/google-api-javascript-client/source/browse/samples/authSample.html

我正在测试 Google Drive API,特别是 gapi.client.drive.files.copy 方法。我可以让它将文件复制到我的云端硬盘,但我无法让它更改标题。这是代码:

function makeApiCall() {
        gapi.client.load('drive', 'v2', function() {
          var request = gapi.client.drive.files.copy({

        "title": "New Landmax SS from API 5",
        "fileId": "0Ap_i-ZEiVl0pdDhYbFpxSFc5ZW1nYlMwV2poSXhTSGc"
          });
          request.execute(function(resp) {
                result = resp;
          });
        });
      }

但是,我可以使用 Google API Explorer 让它工作,但它没有提供 JavaScript 代码。所以这可能是一个小的语法问题。建议?不幸的是,Drive API 示例代码都没有使用新的(er)Javascript 客户端 API,只是服务器端。

4

3 回答 3

1

再次观看 Google I/O 视频后,我现在似乎可以使用复制具有新名称的 Google 电子表格的语法:

var url = 'drive/v2/files/0Ap_i-ZEiVl0pdDhYbFpxSFc5ZW1nYlMwV2poSXhTSGc/copy'

var request = gapi.client.request({
'path':url,
'method': 'POST',
'body':{
    'title': 'New Landmax SS from API 6'
    }
    });

REST 请求和 JsonRPC 之间发生了混淆,它们相似但不相同。上面的 REST 版本有效。最初的问题是我无法开始工作的 JsonRPC。如果有人可以使 RPC 版本工作并解释何时使用任一版本,我想很多开发人员会很感激。

这是非常酷的东西!想象力正在燃烧。我注意到原始电子表格中的 Google App Scripts 也被复制了。

于 2012-08-10T21:56:17.430 回答
1

试试下面的代码:

/**
* Copy an existing file.
*
* @param {String} originFileId ID of the origin file to copy.
* @param {String} copyTitle Title of the copy.
*/
function copyFile(originFileId, copyTitle) {
    var body = {'title': copyTitle};
    var request = gapi.client.drive.files.copy({
       'fileId': originFileId,
       'resource': body
     });
    request.execute(function(resp) {
    console.log('Copy ID: ' + resp.id);
  });
}

希望这会有所帮助。

来源 - Google Drive SDK 参考

于 2013-05-10T08:37:37.287 回答
0

根据您使用客户端库发送的请求和响应,检查来自 API 控制台的请求和响应。我怀疑它们不一样。

你需要的是更像:

var request = gapi.client.drive.files.copy({
  "fileId": "0Ap_i-ZEiVl0pdDhYbFpxSFc5ZW1nYlMwV2poSXhTSGc",
  "body":    {
    "title": "New Landmax SS from API 5",
  }
});

此处的区别在于 fileId 是 API 方法调用的参数,而标题是随方法发送的 JSON 资源的一部分。

于 2012-08-09T04:48:17.917 回答