【问题标题】:Google Sheets - Pushing a row to a second spreadsheet based on a value being entered谷歌表格 - 根据输入的值将一行推送到第二个电子表格
【发布时间】:2018-11-15 01:42:04
【问题描述】:

我是新手,

我有 2 个谷歌电子表格:

电子表格 A:活动工作表包含多个选项卡,其中包含要推送到 B 的信息。 电子表格 B:具有单个选项卡的电子表格。与电子表格 A 相同的标题和结构。

根据用户在电子表格 A 中任何 1 个选项卡的第一列中选​​择“是”的答案,我希望将整行移至电子表格 B。

我修改了一个适用于单个电子表格的脚本(即将行从一个选项卡移动到另一个选项卡)以尝试让它在电子表格之间工作:

function onEdit(event) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var tss = SpreadsheetApp.openById('B').getSheetByName('Sheet 1');
  var s = event.source.getActiveSheet();
  var r = event.source.getActiveRange();

  if(r.getColumn() == 1 && r.getValue() == "Yes") {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var target = tss.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
  }
}

可能不用说,这不会产生任何结果。在搜索了许多帖子和论坛后,我只看到个人发布了有关如何在选项卡之间移动行而不是在完全独立的电子表格之间移动行的帖子。甚至有可能做到这一点吗?如果是这样,我在脚本中做错了什么?

非常感谢任何花时间提供帮助的人。

安东尼

【问题讨论】:

  • 可能是的,但不是使用“简单触发器”。查看您的 Apps 脚本触发器文档
  • 还有一个不使用 Google App Script 的替代方案,但这取决于您是否要对 Spreadsheet A 的内容保密 - 您需要隐藏这些行吗?如果是这样,那么您需要 Google App Script 来推送,因为您已经开始尝试了。
  • 对不起,延迟重新开始。 @Paul 我不需要将电子表格 A 的内容作为秘密/隐藏这些行。您认为替代方案是什么?
  • 您可以结合使用 IMPORTRANGE() 和 QUERY()。例如。 =QUERY(IMPORTRANGE(url,range),"选择 A 其中 B 匹配 'Yes'") 或类似
  • 嘿@Paul 这是一个完全实用的解决方案。我进行了更改,现在它可以工作了。事实证明,在我的 IT 部门云锁定我的脚本时,我在后台遇到了无穷无尽的问题,这是一个很好的解决方案。谢谢

标签: google-sheets


【解决方案1】:

在与 cmets 部分的 OP 进行对话后,表明原始电子表格不应保密。

因此,可以通过在电子表格中使用 IMPORTRANGE() 和 QUERY() 的组合来提供所需的功能,而无需使用 Google App Script。例如,

=QUERY(IMPORTRANGE(url,range),"select A where B matches 'Yes'") or similar

这会从第二个电子表格中导入数据,然后 QUERY() 函数作为按特定标准过滤导入范围的一种方式。

一旦导入的范围被授权,电子表格的编辑者就可以访问它,例如删除或修改查询。如果需要,您可以通过保护该特定单元格来防止这种情况。

【讨论】:

    猜你喜欢
    • 2019-02-06
    • 2023-03-07
    • 2019-03-25
    • 2018-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多