自动制作 Google 文档副本以供编辑的脚本

2024-02-11

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

我会这样做 -

  1. 确保您的原始文档至少可供访问它的人员读取。

  2. 从 URL 中获取 fileId -

  3. 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>');
    }
    
  4. 将其部署为以访问该应用程序的人的身份运行。

要记住的一件关键事情是,由 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(使用前将#替换为@)

自动制作 Google 文档副本以供编辑的脚本 的相关文章

  • 从 Gmail 获取 pdf 附件作为文本

    我在网络和 Stack Overflow 上搜索但没有找到解决方案 我尝试做的事情如下 我通过邮件收到某些附件 我希望将其作为 纯 文本进行进一步处理 我的脚本如下所示 function MyFunction var threads Gma
  • 将活动工作表作为电子邮件附件从 Google 工作表发送

    我有一个谷歌表单 可以捕获电子表格中的响应 目前 每次做出新响应时 它都会创建一个新工作表 我现在尝试将 邮寄活动工作表脚本 添加到创建新工作表的现有脚本中 但是我收到错误 请求失败https docs google com spreads
  • 无法实施第三方 Google 日历会议插件

    我正在研究 Google 日历会议插件的实施并发现了一些问题 我按照文档执行示例代码 但它没有按预期工作 从我的角度来看 我的清单文件是完整的 但是当我尝试从 从清单部署 链接发布日历会议插件时 它会打开我的谷歌日历 但它不会显示我的会议
  • 服务不可用:复制 Google 文档时出现 DOCS

    突然遇到一个问题 即 Google DOCS 服务在调用一些复制元素后失败 有趣的是 它实际上复制了第一个元素 但是当它进入 for 内的第二个循环时 它失败并给出以下错误 服务不可用 文件 该脚本在我们公司内部发布后 可以正常运行几个月
  • 有 Google Keep API 吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Google Keep 有 API 吗 我想为 Google Keep 制作一个 Windows 8 应
  • 图像未显示在从 HTML 创建的 PDF 上

    我想动态创建 PDF 这意味着我将从 Google Drive 获取文件 然后将它们放入 HTML 代码中 并尝试从中创建 PDF 一切工作正常 除了图像没有显示 我现在正在做的是 从 HTML 字符串创建 HtmlOutput 获取该 H
  • 添加链接以在 Google 文档中打开本地文件

    我已经制作了有关我的工具的指南 或类似教程的内容 以与我的公司分享 我使用 Google 文档来做到这一点 并且我想添加打开视频指南的链接 我想知道一种在文档中添加链接的方法 我所做的如下 工作表 或您的文档 中的链接仅响应互联网协议 例如
  • 谷歌表格根据今天的日期隐藏行

    在 Google Sheets 中 当 A 列中的日期等于或早于今天的日期时 我需要一个脚本来自动隐藏工作表 1 中的行 因此 如果今天是 2018 年 8 月 29 日 单元格 A3 中的日期是 2018 年 8 月 28 日 则第 3
  • 使用 Google 云端硬盘缩略图的正确方法是什么?

    我首先尝试存储和使用 API 返回的链接 但它会在短时间内过期 然后我尝试在本地下载并存储图像 并从我的服务器提供它 但是当我没有使用我的帐户登录时 缩略图链接会抛出 404 错误 尽管文档是完全公开的 提供 检索文档缩略图的正确方法是什么
  • 用于创建文件夹的应用程序脚本无法在共享驱动器中运行

    谷歌应用程序脚本新手在这里 我发现这段代码可以帮助使用 Google Sheet 中的输入在我的个人 Google Drive 中创建文件夹 来源 Youtube 上的 Google Sheet Community 但是 当我尝试在共享的
  • 如果行值存在于另一个工作表中,则将其复制到新工作表

    我是 Google 脚本新手 需要创建一个脚本 我找到了这个question https stackoverflow com questions 22008331 google script delete row if a value in
  • 我可以直接从我的谷歌云端硬盘在线推送/拉取吗?

    有一些方法可以通过谷歌驱动器同步 Windows 应用程序将我的本地 git 存储库同步到我的谷歌驱动器 但我想知道我是否可以完全绕过它的需要 Fro eg git remote add origin https drive google
  • 什么是云端硬盘发起的授权?

    The 关于授权 页面 https developers google com drive about authGoogle Drive 的 SDK 文档中有一个标题为 Drive initerated Authorization 的部分
  • 当 Google 任务标记为“已完成”时如何触发 Google 脚本

    Google Apps 脚本允许由各种事件触发脚本 看here https developers google com apps script guides triggers 当用户将任务标记为已完成 在 Google 任务中 时 我想更新
  • 有没有办法替换 Google Docs API 中文本的 URL 链接?

    我开始用 Python 探索 Google Docs API 它几乎可以完成我想要它做的所有事情 除了一件事 我可以替换文档的文本 但无法更改超链接的值 意思是如果链接看起来像这样 a link http www example com 我
  • 如何在多个文档中使用 Google Apps 脚本

    我有一个谷歌应用程序脚本 我想在多个文档中使用它 我也可能想稍后在这些文档中更改它 因此我必须使用same所有这些文档中的脚本 而不是该脚本的副本 我知道以下问题可能属于重复问题 但我不愿意接受它的答案 Google Apps 脚本 如何在
  • 在 Google 表格脚本中设置活动单元格的值

    我想创建一个公式 在某个单元格更改上创建时间戳 下面的代码就可以了 我现在想做的是将公式转换为纯文本 将该时间戳锚定到工作表上 如果您手动执行此操作 您将选择时间戳 复制它们并将它们粘贴为值 我不想手动执行此操作 因此我创建了下面的脚本 它
  • 为什么我们使用 SpreadsheetApp.flush()?

    我的理解是 flush https developers google com apps script reference spreadsheet spreadsheet app flush有助于在功能发生时执行这些功能 而无需将它们捆绑在
  • 如何使用Google脚本获取当前单元格下单元格的值?

    我找不到看起来像这样的选项 var spreadsheet SpreadsheetApp getActive var sheet spreadsheet getActiveSheet sheet getRange sheet getCurr
  • 从电子表格脚本中调用 Web 应用程序脚本?

    如何从 Google 电子表格容器中的脚本调用外部 Google Web App 脚本 我有许多动态创建的电子表格 并希望它们全部调用一个 Web 应用程序 以实现一致性和易于维护 看看这篇博文 触发主从电子表格之间的更新 http www

随机推荐