如何引用绑定到名称而不是工作表的工作表

时间:2020-02-03 01:26:24

标签: google-apps-script google-sheets

我正在制作电子表格以格式化Google表单的响应。但是,该表格将每周发送一次;理想情况下,我想将表单响应导入到此电子表格中,让格式化的数据表现在使用此新的响应表,而不是旧的响应表,而不必更新数据表中的公式。但是,如果我尝试通过将新的数据表重命名为旧的数据表来做到这一点,它将保留旧的数据表引用并在所有公式中更新其名称。

我没有从一些Google搜索中找到任何解决方案。有一个简单的方法可以解决此问题吗?

编辑here是一个示例电子表格。理想情况下,我希望从“新表”而不是旧表中检索“格式表”中的数据。但是,我不想更改“格式表”中的所有公式以反映这一点,因为这是我经常进行的过渡。不幸的是,重命名工作表会保留参考。

1 个答案:

答案 0 :(得分:2)

  • 您要通过将工作表{{1}中的值替换为工作表Formatting Sheet中的新值来使用工作表Old Sheet上的值。
  • 在当前问题中,即使更改工作表名称,也无法更新值。

如果我的理解正确,那么这个答案如何?请认为这只是几个可能的答案之一。

根据您的情况,即使更改了工作表名称,工作表ID也不会更改。这样,公式将使用旧值。我认为您的问题的原因是这样的。在此答案中,为了实现您的目标,使用了Google Apps脚本。

流量:

示例脚本的流程如下。

  1. 检索New SheetNew Sheet的工作表对象,它们分别是源工作表和目标工作表。
  2. 备份Old Sheet
    • 如果您不想备份它,请删除Old Sheet
  3. 将值从destinationSheet.copyTo(ss).setName(destinationSheet.getName() + "_backup_" + new Date().toISOString());复制到New Sheet。以此替换值。在Old Sheet,使用新值。

示例脚本:

请复制以下示例脚本并将其粘贴到共享电子表格的脚本编辑器中。并运行Formatting Sheet

myFunction()
  • 运行function myFunction() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sourceSheet = ss.getSheetByName("New Sheet"); var destinationSheet = ss.getSheetByName("Old Sheet"); // Backup "Old Sheet". destinationSheet.copyTo(ss).setName(destinationSheet.getName() + "_backup_" + new Date().toISOString()); // Put values from "New Sheet" to "Old Sheet" sourceSheet.getDataRange().copyTo(destinationSheet.getRange(1, 1)); } 的脚本时,您可以在myFunction()的表上看到由新值计算的结果。

参考文献:

相关问题