Javascript CopyPasteType.PASTE_值不会仅复制Google工作表中的值

Javascript CopyPasteType.PASTE_值不会仅复制Google工作表中的值,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我正在做一个简单的项目,每天将新冠病毒数据导入谷歌表单。我遇到了一个问题,因为我使用的是IMPORTHTML,所以每次在我使用的网站上更新表时,表都会更新。我不想这样,因为目标是从每天的统计数据中保留表格。我的解决方案是复制我导入的表并将其(仅值)粘贴到表的顶部。一切正常,包括复制和粘贴,但粘贴值似乎不正常。当我手工操作时,它解决了我的问题,但当我使用代码时,它就解决不了问题。这是我的密码 function getData() { //get yesterdays date for s

我正在做一个简单的项目,每天将新冠病毒数据导入谷歌表单。我遇到了一个问题,因为我使用的是IMPORTHTML,所以每次在我使用的网站上更新表时,表都会更新。我不想这样,因为目标是从每天的统计数据中保留表格。我的解决方案是复制我导入的表并将其(仅值)粘贴到表的顶部。一切正常,包括复制和粘贴,但粘贴值似乎不正常。当我手工操作时,它解决了我的问题,但当我使用代码时,它就解决不了问题。这是我的密码

function getData() { 


  //get yesterdays date for sheet name and title of table
  const today = new Date()
  const yesterday = new Date(today)

  yesterday.setDate(yesterday.getDate() - 1)

  today.toDateString()
  yesterday.toDateString()


  //open up a new spreadsheet with yesterday's date as name
  var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var yourNewSheet = activeSpreadsheet.getSheetByName(yesterday);

  if (yourNewSheet != null) {
    activeSpreadsheet.deleteSheet(yesterday);
  }

  yourNewSheet = activeSpreadsheet.insertSheet();
  yourNewSheet.setName(yesterday);
  yourNewSheet.activate();  


  //import table into new sheet and put yesterday's date as title on top of table
  //var sheetName = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(yesterday); 
  var queryString = Math.random(); 
  var cellFunction = '= IMPORTHTML("https://www.worldometers.info/coronavirus/country/us/","table", 2)'

  yourNewSheet.getRange('E1').setValue(yesterday);
  yourNewSheet.getRange('A3').setValue(cellFunction); 


  // copy and paste the range to values only so that the importHTML function doesn't download new data when it updates every day
  yourNewSheet.getRange('A3:Z100').copyTo(yourNewSheet.getRange('A3:Z100'), SpreadsheetApp.CopyPasteType.PASTE_VALUES);


}```

我以前遇到过这种情况,因为
copyTo(…)
有两种声明方法

1)
.copyTo(目的地、复制粘贴类型、转置)

如果不是的话,它会读作2)这是什么意思?我想这没什么意思

2)
.copyTo(目的地,选项)

为此,需要将
{contentsOnly:true}
改为

您可以使用上面的其中一个,结果将是相同的

注:
此外,在复制范围之前,请确保使用更新脚本。否则,公式生成的值可能根本不会被复制。

我以前遇到过这种情况,因为
copyTo(…)
有两种声明方法

1)
.copyTo(目的地、复制粘贴类型、转置)

如果不是的话,它会读作2)这是什么意思?我想这没什么意思

2)
.copyTo(目的地,选项)

为此,需要将
{contentsOnly:true}
改为

您可以使用上面的其中一个,结果将是相同的

注:
此外,在复制范围之前,请确保使用更新脚本。否则,公式生成的值可能根本不会被复制。

SpreadsheetApp.flush()和向copyTo添加false的组合非常有效!我已经分别尝试了这两种方法,但显然我没有将它们结合使用。对你的帮助我感激不尽!SpreadsheetApp.flush()和向copyTo添加false的组合非常有效!我已经分别尝试了这两种方法,但显然我没有将它们结合使用。对你的帮助我感激不尽!
yourNewSheet.getRange('A3:Z100').copyTo(yourNewSheet.getRange('A3:Z100'), 
SpreadsheetApp.CopyPasteType.PASTE_VALUES, false)
yourNewSheet.getRange('A3:Z100').copyTo(yourNewSheet.getRange('A3:Z100'), 
{contentsOnly:true})