谷歌脚本 - 插入具有多个范围的工作表

Google Script -- Insert sheet with multiple ranges

本文关键字:范围 工作 脚本 插入 谷歌      更新时间:2023-09-26

我有一个涵盖一个月的谷歌电子表格(下面的链接),然后我插入了下个月的工作表,其中只有几个范围作为结转数据。

https://docs.google.com/spreadsheets/d/12zJnE1J5zbnArqMUeFfq2Kk5zvyqxXA0Tgp4Y7Efzes/edit?usp=sharing

我要做的是将多个范围插入到不同的范围,以便将 namestat 放置在 C3:U4 中,结转将放置在 C17:C18 中,日期 (+7) 放置在 B5 中,依此类推。

function TDCopyV3() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getActiveSheet();
  var sheetName = ss.getName();
  var namestat = ss.getRange("C3:U4").getValues();
  var carryover = ss.getRange("C17:U18").getValues();
  var date = ss.getRange("B13").getValue();
  var templateSheet = ss.getSheetByName('Template1');
  ss.insertSheet(sheetName +1, 0, {template: templateSheet}).getRange(3,3,namestat.length,namestat[0].length).setValues(namestat);
}

这就是我卡住的地方,因为我似乎在插入多个部分范围时找不到任何东西。我尝试链接另一个getRange和setData,但这只会导致错误。

ss.insertSheet(sheetName +1, 0, {template: templateSheet}).getRange(3,3,namestat.length,namestat[0].length).setValues(namestat).getRange(3,25,carryover.length,carryover[0].length).setValues(carryover);

试试这个。您必须引用插入的shee才能设置其值:

function TDCopyV3() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName("May 2014");
  var sheetName = ss.getName();
  var namestat = s.getRange("C3:U4").getValues();
  var carryover = s.getRange("C17:U18").getValues();
  var date = s.getRange("B13").getValue();
  var templateSheet = ss.getSheetByName('Template1');
  ss.insertSheet(sheetName +1, 0, {template: templateSheet})
  var shnew =ss.getSheetByName("Copy of HoursDemo1")
  var shnewVal=  shnew.getRange(3,3,namestat.length,namestat[0].length).getValues()
  shnew.getRange(3,3,namestat.length,namestat[0].length).setValues(namestat)
  shnew.getRange(17,3,carryover.length,19).setValues(carryover);
}