getFormula() 和 setFormula() 到多个范围 示例脚本 1:示例脚本 2:参考:

问题描述

我正在尝试使用 Google Apps 脚本在 Google 表格中将所有公式从一张工作表(一月)复制到多张工作表(二月、三月、四月等)。 下面的代码正在为单元格 A1 执行我想要的操作。 但是,我想将所有公式(或者说 A1:Z10)从工作表 1 月复制到目标工作表中的相应单元格。

function copyFormula(){
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("February");
  var fromrange = sheet.getRange("January!A1");
  var toRange2 = sheet.getRange("February!A1");
  var toRange3 = sheet.getRange("march!A1");
  var toRange4 = sheet.getRange("April!A1");
  var toRange5 = sheet.getRange("May!A1");
  toRange2.setFormula(fromrange.getFormula());
  toRange3.setFormula(fromrange.getFormula());
  toRange4.setFormula(fromrange.getFormula());
  toRange5.setFormula(fromrange.getFormula());
}

除此之外,我相信还有更好的写法:i. e.类似 var toRange = sheet.getRange("February!A1","march!A1","April!A1","May!A1");toRange.setFormula(fromrange.getFormula()); 之类的东西,而不是为每个月创建单独的变量。

解决方法

我相信你的目标如下。

  • 您希望脚本变得更简单。
  • 您想将 January 表的单元格“A1:Z10”的公式复制到每个表中的单元格“A1:Z10”。

示例脚本 1:

遗憾的是,在当前阶段,RangeList 不能用于同一 Google 电子表格中的不同工作表。因此,在此示例脚本中,源公式使用循环放入每个工作表的单元格中。

function copyFormula(){
  var sheets = ["February","March","April","May"];
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sourceFormulas = ss.getSheetByName("January").getRange("A1:Z10").getFormulas();
  sheets.forEach(s => ss.getSheetByName(s).getRange("A1:Z10").setFormulas(sourceFormulas));
}
  • 如果要增加张数,请修改sheets

示例脚本 2:

在此示例脚本中,使用了 Sheets API。因为我觉得上面脚本的处理成本有点高,因为setFormula是循环使用的。在这个示例脚本中,过程成本会比上面的略低一些。当您使用此脚本时,please enable Sheets API at Advanced Google servicies

function copyFormula(){
  var ranges = ["February!A1:Z10","March!A1:Z10","April!A1:Z10","May!A1:Z10"];
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sourceFormulas = ss.getSheetByName("January").getRange("A1:Z10").getFormulas();
  var values = ranges.map(r =>({values: sourceFormulas,range: r}));
  var resource = {responseValueRenderOption:"FORMULA",valueInputOption:"USER_ENTERED",data:values};
  Sheets.Spreadsheets.Values.batchUpdate(resource,ss.getId());
}
  • 如果要增加张数,请修改ranges

参考:

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...