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