2012-08-09 38 views
1

我通過谷歌JavaScript客戶端API樣品在這裏工作設置「標題」:谷歌雲端硬盤API - 複製現有的電子表格文件,並使用JavaScript客戶端API

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

我測試了谷歌雲端硬盤API ,特別是gapi.client.drive.files.copy方法。我可以將它複製到我的雲端硬盤,但我無法讓它改變TITLE。這裏是代碼:

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,只是服務器端。

回答

0

不再觀看谷歌I/O的視頻後,我現在似乎有語法工作複製谷歌電子表格使用新的名稱:

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腳本也被複制過了。

0

根據您使用客戶端庫發送的請求和響應,檢查API控制檯的請求和響應。我懷疑他們不一樣。

你所需要的是更多的東西一樣:

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

這裏的區別是FILEID是API方法調用的參數,而標題是JSON資源與方法發送的一部分。

+0

感謝阿里,我試過了確切的語法爲好。我在Firebug中查看了Google API Explorer(GAPIE)和My Code(MC)。從我所看到的,GAPIE正在使用一個簡單的REST,並將「title」作爲有效負載中的唯一項,而MC(跟隨JS客戶端API示例)正在發送RPC Json Post請求。它們是相似的,響應類似,所以它可能是RPC風格的錯誤。如果你有一分鐘​​,請自己嘗試一下示例代碼,換掉drive.file.copy。 – user1541413 2012-08-09 14:18:24

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 Ref

相關問題