当前位置: 首页 > 知识库问答 >
问题:

同步同一Google图纸文件中图纸的第一列和第一行

微生乐
2023-03-14

我需要在同一个Google Sheets文件中同步所有工作表。我只想同步第一行和第一列(这是冻结的),而其余的内容不应该同步。

我还希望这样,如果我在工作表中插入/删除一行,也会对所有其他同步工作表执行相同的操作。此外,如果进行了其他修改,例如冻结了一行,则应在所有图纸上进行相同的修改。

我看到了这些问题中的代码:

  • 如何在两个Google电子表格中使用=importrange()同步两张工作表

简言之,我希望能够使用一个“主”表单,并在其中有几个具有不同值的表单。如果应用了对母版的更改,对图纸的更改应反映母版中的更改。双向同步会很好,但不是严格的要求。

到目前为止,我已经成功地写下了:

var masterSheetN = 2; /*2 means the master sheet is the second sheet. Sheets before the master sheet are ignored*/

function importData() {  
  /*Input sheet*/
  var fromSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var fromSheets = fromSpreadsheet.getSheets();
  var fromWorksheet = fromSheets[masterSheetN-1];
  var fromData = fromWorksheet.getDataRange();
  var fromRowsN = fromData.getNumRows()
  var fromColsN = fromData.getNumColumns()
  var fromRow1 = fromWorksheet.getRange(1, 1, 1, fromColsN);
  var fromCol1 = fromWorksheet.getRange(1, 1, fromRowsN);

  for (i=masterSheetN; i<fromSheets.length; i++) {
    /*Output sheet*/
    var toWorksheet = fromSheets[i];
    var toRow1   = toWorksheet.getRange(1, 1, 1, fromColsN);
    var toCol1   = toWorksheet.getRange(1, 1, fromRowsN);

    /*Sync row and col 1*/
    toRow1.setValues(fromRow1.getValues());
    toCol1.setValues(fromCol1.getValues());

    /*Sync format for the whole sheet*/
    var toGID = toRow1.getGridId()
    fromData.copyFormatToRange(toGID, 1, fromColsN, 1, fromRowsN)
  }
}

这将成功地将所有工作表与第一行和第一列的主工作表同步,并用于格式化。然而,它相当慢,尤其是同步格式(为什么?同步第一行/列似乎要快得多),并且它不会同步冻结/保护行等内容。创建新工作表时,是否有方法同步Master工作表中的所有内容?

共有1个答案

高飞翮
2023-03-14

而不是getValue(),setValue()和CoptFormatToRange()使用复制到(范围)。

我认为它只会复制值和格式。也许您还应该使用getDataValidation()/setDataValidation(规则)来同步数据验证规则。

  • 脚本复制格式不再工作
 类似资料:
  • 使用GoogleApps脚本,我试图用一张工作表中的数据自动填充多张工作表。 我使用两个电子表格,“主”电子表格包含需要自动填充到另一个电子表格中的数据。 另一个电子表格包含模板表,根据“主”表中的条目数量,模板表被重复多次,这是数据需要去的地方。 到目前为止,我已经设法复制了基于主模板的工作表的数量,并在之后删除它们(见代码),但是我找不到任何关于如何自动填充这些工作表的信息。模板根据列中的公司

  • 在一个电子表格中,我有50张表格,代表50个州。在这些州中,我正试图从一个输入列(所有表格上的Col4,列'City'格式如下:'Austin,TX')合并到一个索引列中,以构建一个城市地图。(我在谷歌表单中使用了标记地图)。 然而,为了完成这项任务,我不断地遇到错误。 我已经使用拉入了两张纸(两张纸使其更容易)。 然而,我得到一个 “查询已完成,输出为空”错误。 工作,但我只得到了AL city

  • 我知道如果一列中有重复的值,如何应用条件格式,我知道如何使用公式引用多个工作表中的值;但是,如果值在另一个工作表中是重复的,我要做的是将格式应用于该值。 例如:我有“友谊”、“医疗”、“IT”和“营销”表,其中包含姓名和联系信息。电子邮件地址始终在E列中。 偶尔有人会从垂直领域,例如医疗保健领域,转移到友谊赛中。 当有人被添加到友谊赛工作表时,我希望他们在友谊赛工作表中的电子邮件单元格(E列)变为

  • 我有一个名为form responses的表单,它从google表单中获取输入,然后我用C列(员工代码)中的名称创建了表单,并将表单响应中的所有行附加到新创建的表单中 我开发的代码如下所示:

  • 如果发送到原始接收器主题时出现异常,我应该使用什么标准来将消息重新发送到备用接收器主题。这是否可以从生成器异常处理程序中的异常类型推导出来,而不损害Kafka流中内部生成器的事务性质。 如果我们决定在某些不可恢复的错误中从生产异常处理程序产生一个死信队列,那么这是否可以在“EOS”保证的上下文中完成,或者它必须是拓扑不知道的自定义生产者。

  • 接下来我们将看见如何在 Python 中运行一个传统的“Hello World”程序。本章将会教你如何编写、保存与运行 Python 程序。 通过 Python 来运行的你的程序有两种方法——使用交互式解释器提示符或直接运行一个源代码文件。我们将了解如何使用他们二者的功能。 使用解释器提示符 在你的操作系统中打开终端(Terminal)程序(正如我们先前在 安装 章节所讨论过的那样)然后通过输入