Google 脚本 - 根据回复将新提交的内容移至另一张表格

2023-12-06

我正在尝试创建一个脚本,该脚本将采用新的表单响应并根据提交的信息将其移动到另一张表。例如,假设表单有两个答案选项 A、B。电子表格有三张表;表单回复、工作表 A、工作表 B。如果有人提交表单并选择 A,我需要将该新行从“表单回复”移至“工作表 A”。我发现其他人的脚本完全可以执行此操作,但使用 OnEdit 函数。我无法弄清楚如何修改此脚本以在提交新表单响应时起作用。

function onEdit(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();

if(s.getName() == "Form Responses" && r.getColumn() == 2 && r.getValue() == "A") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Sheet A");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
  }
}

我使用了可安装的触发器,并将 OnEdit 函数替换为 onFormSubmit,但这不起作用。如果有人能帮助我解决这个问题,我将非常感激。

Thanks,


为了实现您想要的目标,您需要:

  1. 创建一个函数write_to_new_sheet每当有新的响应到达表单时,我们就会在触发函数中使用它。该函数将把表单响应作为事件对象e:
function write_to_new_sheet(e){
  let responses = e.response.getItemResponses()
  let new_row = get_new_response_data_as_row(responses)
  let sheet_to_write = SpreadsheetApp.openById('your spreadsheet id').getSheetByName('sheet A') // or 'sheet B', you can set this dynamically by checking the new_row, corresponding to the response as a gsheet row
  write_values_in_first_row(sheet_to_write, new_row)
}

这是辅助功能write_to_new_sheet:

function get_new_response_data_as_row(responses){
  let new_row = []
  responses.forEach(response => {
     new_row.push(response.getResponse())
  })
  return new_row
}

function write_values_in_first_row(sheet, new_row_values){
  let row_to_write_from = 2 // assuming you have a header
  let sheet_with_new_row = sheet.insertRowBefore(row_to_write_from)
  let number_of_rows = 1
  let number_of_columns = new_row_values.length
  let range = sheet_with_new_row.getRange(row_to_write_from, 1, number_of_rows, number_of_columns)
  let results =range.setValues([new_row_values])
  return new_row_values
}

  1. 设置一个可安装的触发器,每当您向表单提交新的响应时,该触发器就会起作用:
function setup_write_to_new_sheet_on_form_submit(){
  ScriptApp.newTrigger('write_to_new_sheet')
  .forForm('your form id goes here')
  .onFormSubmit()
  .create();
}
  1. 运行上面的函数once,设置触发器。
  2. 尝试在表单上提交新的回复,并检查您希望写入的表格中的更改。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google 脚本 - 根据回复将新提交的内容移至另一张表格 的相关文章

  • 正则表达式 - 使用正则表达式提取电子邮件文档的子字符串

    我正在尝试使用正则表达式提取电子邮件文档的子字符串 我正在在线测试正则表达式 它运行得很好 在线正则表达式测试器 https regex101 com r BbWBPk 1 我有一个功能可以检查 Google Apps 脚本上的正则表达式
  • 我的触发器是如何被删除的?

    如果你能弄清楚这一点 那么你就是一位真正的 SQL 大师 这是我见过的最奇怪的事情之一 我已向数据库中的表添加了一个触发器 服务器是 SQL 2008 触发器不会做任何特别棘手的事情 当某些字段发生更改时 只需更改表中的 LastUpdat
  • 不允许使用 HTTP 谓词 POST 来访问路径“[我的路径]”

    我收到一条错误 指出 不允许使用 HTTP 动词 POST 来访问路径 我的路径 该错误是由于我正在实现一个使用 POST 方法的 HTML 表单元素并且未在其 ACTION 参数中显式定义 aspx 页面而引起的 例如
  • 许多文档引用了一个 Google Apps 脚本 [重复]

    这个问题在这里已经有答案了 我已经通过驻留在 Google 文档中的 Google Apps 脚本创建了一个脚本 我使用该文档作为模板对象 然后将其复制到我使用这些脚本函数的许多 Google 文档中 问题是 每当我编辑该主脚本时 所有子文
  • 如何使 onEdit() 触发函数应用于多个工作表

    我正在处理一张 Google 表格 我有一个脚本可以填充column B当我更新时有时间戳column A在第一个选项卡上 不过 我需要它在第二个选项卡上执行相同的操作 但我无法让它在那里工作 我需要改变什么 我当前使用的脚本是 funct
  • 通过嵌入式 Google Sheet 上的按钮激活脚本

    我正在尝试嵌入一个 Google 电子表格 其中包含一个我希望用户能够激活的脚本 我不希望他们能够编辑页面上的任何内容 我想我可以这样做 共享工作表并设置编辑权限 限制在我想要共享的一张纸上进行编辑 图像位于单元格上方 所以我认为这会阻止人
  • 大文本输入导致 http post 失败

    我的应用程序中有一个表单 技术人员可以在其中输入有关不同事件或所采取操作 例如更新服务器 的信息 问题是这些输入可能相当长 然后我的表单就停止工作了 如果浏览器尝试发送数据 服务器会向浏览器返回 302 错误 但通常当我尝试提交时 浏览器不
  • JSON 数据的动态表单(不同类型)

    我尝试使用 JSON 中的数据在 AngularJS 中创建动态表单 我有这个工作 HTML p p
  • 如何修复 Django 应用程序的评论视图中的此错误?

    我正在尝试用 Django 开发一个应用程序 目前 我正在尝试创建一个评论部分 供用户使用表单撰写和提交评论 我制作了一个模板 显示电影的信息以及用户可以对电影发表评论的表单 问题是 当我编写评论并尝试提交时 会出现此错误 myapp2 2
  • Oracle SQL 触发器上的变异表

    我正在尝试执行触发器 但出现变异表错误 SQL 代码是这样的 CREATE OR REPLACE TRIGGER CHK Apartado D BEFORE INSERT OR UPDATE ON CONTRACTS FOR EACH RO
  • mysql 触发器与 php 脚本

    我有下一个 mysql 触发器 DELIMITER CREATE TRIGGER Test Insert BEFORE INSERT ON sat clientLocation FOR EACH ROW BEGIN DECLARE cmd
  • Clasp 无法创建新的 Apps 脚本

    我用这个终端命令克隆了一个应用程序脚本 clasp clone
  • jQuery 在所见即所得文本区域中触发 keyCode Ctrl+Shift+z 和 Ctrl+z

    我想知道如何触发由以下组成的事件 keyCodeCtrl z和事件键码组成Ctrl Shift z Use e which它已通过 jquery 跨浏览器标准化 document keydown function e if e which
  • 如何使用 google Sheet 作为数据库

    如何在 HTML Web 应用程序中生成 Google 工作表数据 并允许用户从 HTML Web 应用程序更新评论 我在谷歌表中有一些数据 通过谷歌表单提交 我想使用搜索按钮根据 请求编号 从网络应用程序搜索工作表数据 应该能够更新网络应
  • Google App脚本:无法保留前导零,因为它被自动删除

    我是谷歌脚本的新手 我有一个像下面这样的场景 我有 Sheet1 其中包含 A 列和 B 列 通常我尝试将十进制值存储到其中 我的意思是A列中的整数部分和B列中的小数部分 例如 场景一 如果值为 23 75 则 Column A 应为 23
  • 如何重置 jQuery 中的单选按钮,以便不检查任何单选按钮

    我在 HTML 中有这样的单选按钮 td td
  • 插入后用触发器更新多行(sql server)

    我有一个表 orderDetails 包含订单的产品 产品编号 color size quantity 和一个表库存 产品编号 size color stock 订单完成后 我使用此查询将项目插入表中orderDetails INSERT
  • PHP - 存储和计算无线电输入的总分

    我设计了一个基于网络的小型系统 其中有一个学校评估表 可以向可以访问该系统的特定用户询问一些问题 并且输入将是单选类型 1或2或3或4 该代码正在运行 可以将输入插入数据库 但我不知道计算总分并将其存储在数据库中的正确查询 这是当前正在运行
  • Firebase GAS webapp Google 弹出窗口消失

    我正在尝试升级我的 firebase GAS web 应用程序 之前我有一个弹出窗口 可以让用户使用 Google 登录 我不确定我做错了什么 但我已经升级到新的 firebase 现在正在尝试使用新的代码格式进行相同的登录 发生的情况是
  • 如何设置多个过滤器?

    我有一个关于将过滤器应用于多个值以使用 Google 脚本隐藏它们的问题 我有一个具有多种状态的项目跟踪器 例如 达到目标 已完成 已取消 已延迟 等 我想编写一个脚本来设置 状态 列的筛选器值 以便标记为 已完成 或 的行 已取消 被隐藏

随机推荐

  • 如何在Python PyQt5中将变量分配给工作线程?

    我使用pyqt5设计了一个GUI程序 我有一个主线程和一个工作线程 当 GUI 启动时 我会从用户那里获得一些输入 例如年龄 姓名 并且我想在工作人员中处理这些输入 例如我如何发送我使用的输入self ui firstname text 给
  • Silverlight:从 silverlight 控件创建图像

    是否可以从 silverlight 控件生成图像 以便该控件将自身及其内容渲染到图像中 以便我可以对图像进行相同的像素操作 在 Silverlight 2 中无法实现此目的 我见过人们通过将 XAML 发布到服务器来解决此限制 该服务器将使
  • 如何在 C# 中反序列化包含可变数量对象的 json 对象并将它们作为键值集合?

    如何反序列化以下 JSON 对象并获取 Dictionary 的集合 其中键 字符串 应该是方法名称 对象是 C 中的详细信息 methods password 2 title Password CustomerID type passwo
  • 使用 iText 将标题添加到 pdf

    如何使用 iText 5 0 5 将页眉添加到每个 PDF 页面 这涵盖在 iText 实践 第二版第 5 章 代码示例均可在线免费获取 尤其电影国家1 and 电影史2两者都处理page页眉和页脚 归结为使用PdfPageEvent实现
  • 拼写错误:找不到合适的拼写检查程序

    虽然功能aspell标配utils包 它似乎不适合我 我不断收到同样的错误 aspell love Error in aspell love No suitable spell checker program found 有什么想法吗 gt
  • 使用 GAS AT&T 指令计算引导扇区的填充长度?

    所以我想在引导扇区添加填充 比方说 目前只有一个无限循环 jmp 该扇区的长度需要为 512 字节 还有 神奇的数字0xaa55需要在最后添加 jmp skip 508 0 word 0xaa55 但是 如果我想打印一些内容 但不想计算所有
  • 如何在iOS Reachability中检测网络信号强度

    我正在 iOS 中创建一个新的旅行应用程序 该应用程序高度依赖于地图 并且将包含两个地图 当用户有较强的网络信号时 我的第一个地图将起作用 Apple 地图 我的第二张地图将在没有任何网络或信号非常低时使用 离线 地图框 为什么一个应用程序
  • 处理上传的文本文件后在 Google 云端硬盘中创建新文档

    我成功地将文本文件上传到谷歌云端硬盘 并且编写了一种方法 可以成功地将文本翻译为猪拉丁语 现在我尝试在 Google Drive 中创建一个新文档来输出翻译后的文本 但是 我总是收到消息 发生错误 当我检查我的云端硬盘时 我只有原始上传的文
  • AccountManager:如何让用户使用对话框选择帐户

    在 AccountManager 教程中记住您的用户 建议 如果有多个Account在数组中 你应该呈现一个 对话框要求用户选择一个 最好的方法是什么 我心中有一个解决方案 但如果社区中有其他好的示例 那么这似乎是一种可以由其他人共享和轻松
  • 为什么 Android Studio 3.0.0 在 APK 上设置 FLAG_TEST_ONLY?

    我已经通过 3 0 0 rcX 来自 Canary 渠道 到达 Android Studio 3 0 0 来自稳定渠道 当我启动一个全新的应用程序并构建它时 以下代码 应用程序内部 显示设置了 FLAG TEST ONLY 标志 Log e
  • Python 中 Pivot 和 Transpose 的组合

    我正在做一些文本分析 并且有一个看起来像这样的数据 TABLE 1 C1 C2 C3 A1 TEXT1 ANOTHER TEXT1 A2 TEXT1 ANOTHER TEXT1 B1 TEXT2 ANOTHER TEXT1 B2 TEXT2
  • 从多个 csv 文件中删除标题

    我有多个csv每天来自不同服务器的文件 这些文件很大 超过 200 MB 我必须删除所有这些的标题csv文件 并使用批处理文件将它们替换为所需的列标题 下面的代码可以很好地仅从一个文件中删除列标题 echo off set csv mycs
  • 获取经过的时间跨度的年、月、日 (DateTime)

    如何将日期时间选择器值中的年龄显示为年 月 日 例如 Datetimepicker value 1 11 2014 Today 1 12 2015 最终结果将是 1 年 0 个月 1 天 S 但得到这个结果不仅仅是减去DateTime Ye
  • void() 表达式的目的是什么?

    您不能声明void多变的 void fn void a ill formed 但这编译 void fn void a void object 什么是void 意思是 它有什么用 为什么是void a 格式不正确 同时void OK void
  • 从 ng-click 获取原始元素

    我的视图中有一个项目列表ng click附在他们身上 ul li img src team logoSmall alt title li ul 我正在处理点击事件foo在我的指令中起作用 传递 event作为对已单击对象的引用 但我得到了对
  • 参数数量无效:绑定变量的数量与令牌的数量不匹配 - php 错误

    运行以下代码时 我基本上收到以下错误 无法运行查询 SQLSTATE HY093 参数数量无效 绑定变量的数量与令牌数量不匹配 我是 php 新手 不确定为什么会收到此错误 我过去曾将这段代码用于 INSERT 而不是 UPDATE 语句
  • 如何垂直对齐 HTML 中的元素

    我有一个按钮 旁边有一些文字 就像这样 Button Text 我想让文本与按钮的中心垂直对齐 我应该如何在 CSS 中做到这一点 这是我的尝试 http jsbin com oduma4 4 我发现这种方法有两个问题 文本在 IE 6 中
  • 使用PHP PDO的数据库抽象类设计

    我正在设计一个网络应用程序 实际上 这是一种爱好 我正在尝试自学设计 还有什么比这样做更好的方法 无论如何 我正在考虑如何处理我的数据库 我很满意PDO 我正在考虑在我的抽象类中利用 PDO 我正在考虑创建一个单例 以便只有一个数据库连接
  • 如何读取系统的输出('ls')?

    我正在用 c 代码做一些文件 IO 我的文件中有一个特定的模式 我可以通过 shell 命令验证这一点cat abc txt grep abc wc l 当我使用执行相同的命令时System 它给出了正确的输出 但我不知道如何将其输出放入变
  • Google 脚本 - 根据回复将新提交的内容移至另一张表格

    我正在尝试创建一个脚本 该脚本将采用新的表单响应并根据提交的信息将其移动到另一张表 例如 假设表单有两个答案选项 A B 电子表格有三张表 表单回复 工作表 A 工作表 B 如果有人提交表单并选择 A 我需要将该新行从 表单回复 移至 工作