Javascript 如何阻止公式使用更新的数据?(谷歌表单)

Javascript 如何阻止公式使用更新的数据?(谷歌表单),javascript,google-apps-script,google-sheets,freeze,Javascript,Google Apps Script,Google Sheets,Freeze,我有一个vlookup公式,寻找名字并返回那个人的平均值。我在一周内记录这些平均值,并在不同的列中将它们标识为W1、W2、W3等。问题是,我导入的数据只有一个平均值,这意味着如果我导入它,它将覆盖我几天前使用同一个报告(只是旧版本)输入的内容 我的问题是,当W1调用的数据发生更改时,有没有办法阻止W1的公式更新?本质上,冻结价值观?这样,我就不必为了保存历史而不断添加新选项卡来导入新数据。数据是可靠的,我收集的信息不仅仅是平均值,所以我需要全部信息 我也不介意编写一些有助于解决我的问题的脚本,我

我有一个vlookup公式,寻找名字并返回那个人的平均值。我在一周内记录这些平均值,并在不同的列中将它们标识为W1、W2、W3等。问题是,我导入的数据只有一个平均值,这意味着如果我导入它,它将覆盖我几天前使用同一个报告(只是旧版本)输入的内容

我的问题是,当W1调用的数据发生更改时,有没有办法阻止W1的公式更新?本质上,冻结价值观?这样,我就不必为了保存历史而不断添加新选项卡来导入新数据。数据是可靠的,我收集的信息不仅仅是平均值,所以我需要全部信息

我也不介意编写一些有助于解决我的问题的脚本,我只需要一些指导

编辑:关于编写一个菜单按钮脚本的想法,该按钮将仅复制、粘贴我可以在更新数据之前触发的选定范围的值

我希望能够在我的工作表中选择一个范围,选择菜单“保存信息”,让它复制我选择的内容,并将其粘贴回原来的位置。这将删除在新数据导入时会导致我的值更改的公式,并保留我的历史记录不变

以下是我到目前为止的想法,但我收到了这个错误:

"TypeError: sourceSheet.getDataRange is not a function".

function saveInfo(){
  var spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
  var sourceSheet = spreadSheet.getActiveSheet
  
  var sourceRange = sourceSheet.getDataRange();
  
  var targetSheet = spreadSheet.getActiveSheet();
  
  sourceRange.copyTo(targetSheet.getActiveRange());
} 


function updateMenu() {
  SpreadsheetApp.getActiveSpreadsheet().updateMenu('Save Info', generateMenu())
};
function onOpen() {
  SpreadsheetApp.getActiveSpreadsheet().addMenu('Save Info', generateMenu());
};
function generateMenu() {
  var entries = [{
    name: "Save Data Before Update",
    functionName: "saveInfo"
  }];
  
  return entries;
}
有什么想法吗

谢谢

给你:

function saveInfo() {
    var range = SpreadsheetApp.getActiveSheet().getActiveRange();
    var values = range.getDisplayValues();
    range.setValues(values);
}

function onOpen() {
  SpreadsheetApp.getUi()
  .createMenu('Save Info')
  .addItem('Save Data Before Update', 'saveInfo')
  .addToUi();
}
脚本将选定单元格内的数据转换为纯文本


但实际上你不需要任何脚本。您只需选择单元格,按
Ctrl+C
Ctrl+Shift+V

如果没有其他信息,很难编写脚本。您可能已经想到了这一点。。。但是有两个现有的按钮可以使用。右键单击,复制范围。右键单击范围上的“粘贴特殊-->值”。这将把公式转换为热键的值或Control+Copy、Control+Shift+V。@MetaMan我刚刚添加了一些需要帮助的脚本。菜单正常,但功能不正常。可以看一下吗?将()添加到sourceSheet变量中的getActiveSheet()中。它应该是var sourceSheet=spreadsheet.getActiveSheet()。