我感觉自己像个菜鸟在这里发帖。我非常了解 CSS、HTML 和 XML,但一直避免使用 JS。我对 javascript 知之甚少,最近开始了 Lynda.com 课程来跟上。抱歉我的无知。因此,我真的很难学习 Google Apps 脚本。显然,我需要先学习 JS,然后才能理解它。
我工作的学校(5000名学生)开设了在线课程。我以数千个谷歌文档工作表的形式创建了课程。这些工作表在各个网站上都有链接。
我们面临的问题是,当学生打开文档时,他们必须先复制一份才能编辑它们(我当然不希望他们能够编辑原件)。对于在平板电脑上使用移动浏览器的学生来说,这确实很糟糕,因为在移动设备上使用桌面 UI 时,在 Google 文档中进行复制并不能很好地工作。
我知道这种事情可以通过脚本自动化。我看过here https://developers.google.com/drive/v2/reference/files/copy,你瞧,它有效了!我高兴得尿裤子了,因为我三年来一直在寻找这样的功能。 (是的,我知道这很伤心)。
所以,我要问的是,有人愿意帮助菜鸟弄清楚如何调整此代码,以便学生单击网站课程上的按钮,它会自动在新选项卡中创建并打开工作表的副本吗?
/**
* 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);
});
}
昨天花了一整天的时间学习Javascript,我还有很长的路要走。不知道我需要多长时间才能自己解决这个问题。
您当然可以使用 Apps 脚本来做到这一点。只需要几行。事实上,您可以只使用我在下面编写的版本。
我会这样做 -
-
确保您的原始文档至少可供访问它的人员读取。
-
从 URL 中获取 fileId -
-
Write a web app https://developers.google.com/apps-script/execution_web_apps在 Apps 脚本中使用以下代码 -
function doGet(e) {
//file has to be at least readable by the person running the script
var fileId = e.parameters.fileId;
if(!fileId){
//have a default fileId for testing.
fileId = '1K7OA1lnzphJRuJ7ZjCfLu83MSwOXoEKWY6BuqYitTQQ';
}
var newUrl = DocsList.getFileById(fileId).makeCopy('File copied to my drive').getUrl();
return HtmlService.createHtmlOutput('<h1><a href="'+newUrl+'">Open Document</a></h1>');
}
-
将其部署为以访问该应用程序的人的身份运行。
要记住的一件关键事情是,由 Apps 脚本构建的 Web 应用程序无法强制自动打开新窗口。相反,我们可以显示一个可在编辑模式下单击进入文档的链接。
您可以在这里看到它的运行情况(将创建一些虚拟文件)-
https://script.google.com/macros/s/AKfycbyvxkYqgPQEb3ICieywqWrQ2-2KWb-V0MghR2xayQyExFgVT2h3/exec?fileId=0AkJNj_IM2wiPdGhsNEJzZ2RtZU9NaHc4QXdvbHhSM0E https://script.google.com/macros/s/AKfycbyvxkYqgPQEb3ICieywqWrQ2-2KWb-V0MghR2xayQyExFgVT2h3/exec?fileId=0AkJNj_IM2wiPdGhsNEJzZ2RtZU9NaHc4QXdvbHhSM0E
您可以通过输入自己的内容来测试这一点fileId
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)