10

我觉得这里总是有noob的贴子。我非常了解CSS,HTML和XML,但一直避免使用JS。我知道JavaScript很少,最近开始了一个Lynda.com课程来赶上。对不起,我的无知。因此,我非常努力学习Google Apps脚本。很明显,我需要学习JS,然后才能理解其中的任何内容。脚本自动制作Google文档的副本进行编辑

我工作的学校(5000名学生)已经建立了在线课程。我以数千个Google文档工作表的形式创建了课程表。这些工作表在各种网站上链接。

我们所面临的问题是,当学生打开的文件,他们必须让他们的副本,才可以对其进行编辑(当然,我不希望他们能够编辑原件)。这对于在平板电脑上使用移动浏览器的学生来说真的很糟糕,因为在移动设备上使用桌面用户界面时,在Google文档中制作副本效果并不理想。

我知道这种事情可以用脚本自动化。我看了here,低,看,它的作品!因为我一直在寻找这样的功能三年,所以我很开心地嘲笑我的裤子。 (是的,我知道这很难过)。

所以,我问的是,任何人都愿意帮助noobob搞清楚如何调整这段代码,让学生点击网站上的一个按钮课程,它会自动打开并打开一份工作表副本在新标签中?

/** 
* 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,我还有很长的路要走。不知道我需要多长时间才能自行解决这个问题。

+1

你准确的问题是什么? – PeeHaa

+0

基本上,需要通过点击按钮执行此功能并获取文档以在新选项卡中打开。寻找适合代码的人。 – user1798533

+0

这不是Apps脚本代码。你有没有试过去学习它? (在请求某人为你写信之前) –

回答

12

您当然可以使用Apps脚本来做到这一点。只需要几行。事实上,你可以使用我在下面写的版本。

这里是我会怎么做 -

  1. 确保您原始文件至少阅读将要访问它的乡亲启用。

    Access rights

  2. 抓住FILEID从URL -

    enter image description here

  3. 写Apps脚本在web app用下面的代码 -

    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>'); 
    } 
    
  4. 部署到运行作为访问该应用的人员。

    deploy settings

    记住

一个关键的一点是,通过Google Apps脚本建立一个web应用程序不能自动强行打开一个新的窗口。相反,我们可以在编辑模式下显示可点击到文档中的链接。

你可以看到在行动在这里(会创建一些虚拟的文件) -

https://script.google.com/macros/s/AKfycbyvxkYqgPQEb3ICieywqWrQ2-2KWb-V0MghR2xayQyExFgVT2h3/exec?fileId=0AkJNj_IM2wiPdGhsNEJzZ2RtZU9NaHc4QXdvbHhSM0E

您可以通过将在自己的fileId进行测试。

4

由于DocsList已被弃用,目前你可以用下面的代码文件的副本:

File file=DriveApp.getFileById(fileId).makeCopy(fileName, folder); 

其中fileId可以由阿伦Nagarajan在answer解释得到。

相关问题