此处新增了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是一个更好的选择吗?我很感谢我可能错过的任何指导或资源,以及改进如何提出这些问题的任何提示。提前致谢。