首页 > 解决方案 > 谷歌工作表脚本将工作表复制到带有值而不是公式的新选项卡

问题描述

我目前正在尝试将工作表复制到同一工作簿中的新选项卡,该工作表运行良好。但是,我似乎无法仅复制值和格式,并且公式不断出现。我曾尝试使用“{contentsOnly:true}”,但它不断给我各种错误。

请问有人能帮忙吗

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  // Or DocumentApp or FormApp.
  ui.createMenu('SUBMIT')
      .addItem('SUBMIT', 'menuItem1')
      .addToUi();
}

function menuItem1() {
  SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
     moveValuesDown(); 

}
  
function moveValuesDown() {
  var ss = SpreadsheetApp.getActiveSpreadsheet()
    ss.getSheetByName('Abandoned Phone Calls')
        .copyTo(ss)
        .setName(Utilities.formatDate(new Date(ss.getSheetByName('Abandoned Phone Calls')
            .getRange(1, 1)
            .getValue()), Session.getScriptTimeZone(), "dd MMM yy" ))

}

我还附上了我正在处理的工作表的副本 - 在此先感谢

关联

标签: google-apps-scriptgoogle-sheets

解决方案


不确定您到底尝试了什么,但我在您的电子表格中对此进行了测试,它按预期工作:

function moveValuesDown() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var source_sheet = ss.getSheetByName('Abandoned Phone Calls')
  var new_sheet =  source_sheet.copyTo(ss).setName(Utilities.formatDate(new Date(source_sheet.getRange(1, 1).getValue()),
                   Session.getScriptTimeZone(), "dd MMM yy" ))
  new_sheet.getDataRange().copyTo(new_sheet.getDataRange(),{contentsOnly:true})

}

当您计划再次使用变量时,最好创建变量,而不是将所有内容链接在一起。这可能会导致混淆,而且您可能会多次重复相同的代码。


推荐阅读