此處新增了StackOverflow和Google Apps腳本。我感謝任何幫助/指導。在Google文檔中更改文檔所有者的腳本
任務:
我想寫一個谷歌Apps腳本,將在指定的文件夾傳輸的所有文件的所有權轉讓給一個老闆。我是Google Apps專業版帳戶的超級用戶。但是,我將不是原所有者或新所有者,並且出於安全原因,新所有者不能成爲超級管理員(並因此運行腳本)。原始和新的所有者都在同一個域中。
我發現following code,我已經使用和調整了我的目的,但我得到「請求失敗,返回代碼400.服務器響應:」來自URLFetchApp調用的錯誤。
我做了什麼:
每 Google Apps Documents List developers guide我改變了 「基地」 變量來冒充新文檔所有者:
var base = 'https://docs.google.com/feeds/';
到
var base = encodeURIComponent('https://docs.google.com/feeds/'+newOwnerEmail+'/private/full');
我還將消費者密鑰和祕密更新爲googleOAuth_()方法中的正確值。就這樣,在這裏是領先幷包括向有問題的代碼行全部:
file.removeEditor(newOwnerEmail);
var base = encodeURIComponent('https://docs.google.com/feeds/'+newOwnerEmail+'/private/full');
var fetchArgs = googleOAuth_('docs', base);
fetchArgs.method = 'POST';
var rawXml = "<entry xmlns='http://www.w3.org/2005/Atom' xmlns:gAcl='http://schemas.google.com/acl/2007'>"
+"<category scheme='http://schemas.google.com/g/2005#kind' "
+"term='http://schemas.google.com/acl/2007#accessRule'/>"
+"<gAcl:role value='owner'/>"
+"<gAcl:scope type='user' value='"+newOwnerEmail+"'/>"
+"</entry>";
fetchArgs.payload = rawXml;
fetchArgs.contentType = 'application/atom+xml';
var url = base + encodeURIComponent(oldOwnerEmail + '/private/full/'+fileId+'/acl&alt=json');
try { var content = UrlFetchApp.fetch(url, fetchArgs).getContentText(); }
catch (err) { Logger.log(err.message) }
每次應用程序「嘗試」來執行UrlFetchApp.fetch()的方法,該應用程序「捕獲」的400錯誤。
問題:
什麼可能我會丟失嗎? 「fetchArgs」以某種方式變形(可能是「fetchArgs」正在饋送的「rawXML」)?有了新的Google Drive SDK,使用這個API是一個更好的選擇嗎?我很感謝我可能錯過的任何指導或資源,以及改進如何提出這些問題的任何提示。提前致謝。