我觉得自己像一个总小白张贴在这里。 我知道CSS,HTML和XML非常好,但总是避免JS。 我知道很少JavaScript和最近开始Lynda.com当然追赶。 对不起,我的无知。 因此,我真的很努力学习谷歌Apps脚本。 很显然,我需要学习JS之前,我可以做任何它的意义。
我为(5000个生)工作的学校已建立了一个在线课程。 我在数千谷歌文档的工作表的形式创建的课程。 这些工作表在各种网站链接。
我们所面临的问题是,当学生打开的文件,他们必须让他们的副本,才可以对其进行编辑(当然,我不希望他们能够编辑原件)。 这真的很烂使用在平板电脑上为在谷歌文档进行复印的移动浏览器并没有真正很好地工作使用移动设备上的桌面UI当学生。
我知道这种事情可以用脚本实现自动化。 我看这里 ,和低你看,它的作品! 我在浪费我的裤子了喜悦,因为我一直在寻找这样的功能了三年。 (是的,我知道这是悲哀)。
那么,是什么我问的是, 会有人愿意帮助一个noob弄清楚如何去适应这个代码,以便学生点击一个网站的课的按钮,它会自动在新标签页中打开工作表的副本?
/**
* 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,我还有很长的路要走。 不知道它会多久对我来说,能算出这个对我自己。
你当然可以用Google Apps脚本做到这一点。 只需要几行。 事实上,你可以只使用下面我写的版本。
这里是我会怎么做 -
确保您的原稿至少阅读将要访问它的乡亲启用。
抓斗从URL中的fileid -
写一个Web应用程序使用下面的代码应用脚本-
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>'); }
部署到作为访问应用程序的人运行。
要记住的一个关键问题是,通过Google Apps脚本建立一个web应用程序不能自动强行打开一个新的窗口。 相反,我们可以显示一个链接,可点击进入编辑模式的文档。
你可以看到它在这里的动作(将创建一些虚拟的文件) -
https://script.google.com/macros/s/AKfycbyvxkYqgPQEb3ICieywqWrQ2-2KWb-V0MghR2xayQyExFgVT2h3/exec?fileId=0AkJNj_IM2wiPdGhsNEJzZ2RtZU9NaHc4QXdvbHhSM0E
您可以通过将在自己的测试这个fileId
。
由于DocsList
已被弃用,目前你可以用下面的代码文件的副本:
File file=DriveApp.getFileById(fileId).makeCopy(fileName, folder);
其中fileId
可以如所解释的获得的答案由阿伦Nagarajan。
更新截至2015年, 谷歌脚本文件删除FILEID原因不明。 已重新启用追加“/复制”到谷歌文档的URL前面的方法。 例) https://docs.google.com/document/d/1GTGuLqahAKS3ptjrfLSYCjKz4FBecv4dITPuKfdnrmY/ 副本
这里是代码做正确(如2019年的):
/**
* Create custom menu when document is opened.
*/
function onOpen() {
DocumentApp.getUi()
.createMenu('For Students')
.addItem('Make a copy', 'makeACopy')
.addToUi();
}
function makeACopy() {
var templateId = DocumentApp.getActiveDocument().getId();
DriveApp.getFileById(templateId).makeCopy();
}