我觉得在这里发帖完全是个菜鸟。我非常了解 CSS、HTML 和 XML,但一直避免使用 JS。我对 javascript 知之甚少,最近开始了 Lynda.com 类(class)来 catch 。对不起我的无知。因此,我真的很难学习 Google Apps 脚本。显然,我需要先学习 JS,然后才能理解其中的任何内容。
我工作的学校(5000 名学生)设置了在线类(class)。我以数千个谷歌文档工作表的形式创建了类(class)。这些工作表链接在各种网站上。
我们面临的问题是,当学生打开文档时,他们必须先复制它们才能编辑它们(我当然不希望他们能够编辑原件)。这对于在平板电脑上使用移动浏览器的学生来说真的很糟糕,因为在移动设备上使用桌面 UI 时,在 Google Docs 中制作副本并不能很好地工作。
我知道这种事情可以用脚本自动化。我看过 here ,并且低,看,它的工作原理!三年来我一直在寻找这样的功能,我高兴得尿了裤子。 (是的,我知道这很可悲)。
所以,我要问的是,有人愿意帮助菜鸟弄清楚如何调整此代码,以便学生单击网站类(class)上的按钮,它会自动制作并在新选项卡中打开工作表的副本吗?
/**
* 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 脚本来做到这一点。只需要几行。事实上,你可以只使用我在下面写的版本。
这是我的做法 -
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 脚本构建的网络应用程序不能强制自动打开一个新窗口。相反,我们可以在编辑模式下显示一个可点击进入文档的链接。
您可以在这里看到它的实际效果(将创建一些虚拟文件) -
https://script.google.com/macros/s/AKfycbyvxkYqgPQEb3ICieywqWrQ2-2KWb-V0MghR2xayQyExFgVT2h3/exec?fileId=0AkJNj_IM2wiPdGhsNEJzZ2RtZU9NaHc4QXdvbHhSM0E
您可以通过输入自己的
fileId
来测试它。 .
关于google-apps-script - 用于自动制作 Google 文档副本以供编辑的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13221922/