【发布时间】:2017-01-03 21:21:20
【问题描述】:
我有一张数据表,全天通过 vlookup 从另一张表中读取信息。另一张表通过全天刷新的 importxml 链接到网站。
获得信息后,我需要删除公式并保留值。 IE。一旦单元格不再读取为#N/A,则将该行数据替换为值。然后我的想法是将其设置为触发器,然后每小时运行一次,循环遍历每一行并更新所有不再显示 #N/A 的行。
【问题讨论】:
标签: google-apps-script google-sheets
我有一张数据表,全天通过 vlookup 从另一张表中读取信息。另一张表通过全天刷新的 importxml 链接到网站。
获得信息后,我需要删除公式并保留值。 IE。一旦单元格不再读取为#N/A,则将该行数据替换为值。然后我的想法是将其设置为触发器,然后每小时运行一次,循环遍历每一行并更新所有不再显示 #N/A 的行。
【问题讨论】:
标签: google-apps-script google-sheets
您可以通过运行以下脚本将公式的输出替换为静态值。关键是一定范围是copied to itself, but only as values。
function freezeValues() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Sheet1'); // or whatever name
var range = sheet.getRange("A1:Z1"); // assuming your data appears in A1-Z1
range.copyTo(range, {contentsOnly: true});
}
也就是说,保留公式会更合乎逻辑,因此它会继续生成您希望记录的输出,而不是将其输出复制到其他地方,例如电子表格的新行。示例:
function logValues() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Sheet1'); // or whatever name
var range = sheet.getRange("A1:Z1"); // assuming your data appears in A1-Z1
var values = range.getValues(); // get the data
sheet.appendRow(values[0]); // appends a row with these values to the bottom of sheet
}
【讨论】: