google-apps-script - 用于自动制作 Google 文档副本以供编辑的脚本

标签 google-apps-script google-drive-api google-docs google-docs-api

我觉得在这里发帖完全是个菜鸟。我非常了解 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 脚本来做到这一点。只需要几行。事实上,你可以只使用我在下面写的版本。

这是我的做法 -

  • 确保您的原始文档至少已为将要访问它的人启用。

    Access rights
  • 从 URL 中获取 fileId -

    enter image description here
  • 写一个web app在 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>');
    }
    
  • 将其部署为以访问应用程序的人的身份运行。

    deploy settings

  • 要记住的关键一件事是,由 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/

    相关文章:

    android - 如何从 Android 与 Google 文档交互?

    google-apps-script - 如何使用Google脚本中的URL参数过滤Google表格列中的数据?

    java - 我必须使用哪些库才能将文件上传到 GOOGLE DRIVE

    javascript - 制作一个包含用于提交答案的表格的 Google 表单

    javascript - 谷歌云端硬盘 API : Force login popup to login again or to logon as another user

    csv - Google Apps 脚本 txt 文件 getDataAsString() 返回字符之间的 � 和方形符号

    google-apps-script - 为什么 Google Apps 脚本仅在脚本执行结束后才将分页符和数据插入表中?

    java - PDF 不在 Android 中显示

    pdf - 错误从 Gmail 获取 pdf 附件作为文本

    javascript - 在按钮上将文本复制到剪贴板 - 单击在表上不起作用