Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 如何插入importRange函数并防止值在实现后更改?_Google Apps Script_Importrange - Fatal编程技术网

Google apps script 如何插入importRange函数并防止值在实现后更改?

Google apps script 如何插入importRange函数并防止值在实现后更改?,google-apps-script,importrange,Google Apps Script,Importrange,我有下面的代码,希望在实现导入功能后防止值发生更改!我已经尝试过setValue(),但它仍然会改变。除此之外,代码工作正常。你有什么想法吗 function Evaluation() { var sheet = SpreadsheetApp.getActiveSheet(); var newSpreadsheet = SpreadsheetApp.create("SheetEvaluation"); var newSheet = newSpreadsheet.getSheets()

我有下面的代码,希望在实现导入功能后防止值发生更改!我已经尝试过setValue(),但它仍然会改变。除此之外,代码工作正常。你有什么想法吗

function Evaluation() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var newSpreadsheet = SpreadsheetApp.create("SheetEvaluation");
  var newSheet = newSpreadsheet.getSheets()[0];
  var range = sheet.getRange("A1:AX80");
  var chart = sheet.getCharts()[0];
    var newSpreadsheet = SpreadsheetApp.getActive();
    newSheet.getRange('A1').activate();
  newSheet.getCurrentCell().setValue('=ImportRange("LINK"; "Evaluation!A1:AX80")')
  .setValue('=ImportRange("LINK"; "Evaluation!A1:AX80")');
  chart = chart.modify()
  .asComboChart()
  .addRange(newSpreadsheet.getRange('B48:AX77'))
  .addRange(newSpreadsheet.getRange('B78:AX78'))
  .addRange(newSpreadsheet.getRange('B40:AX40'))
  .setMergeStrategy(Charts.ChartMergeStrategy.MERGE_ROWS)
  .setTransposeRowsAndColumns(true)
  .setNumHeaders(1)
  .setHiddenDimensionStrategy(Charts.ChartHiddenDimensionStrategy.IGNORE_BOTH)
  .setOption('bubble.stroke', '#000000')
  .setOption('useFirstColumnAsDomain', true)
  .setOption('isStacked', 'absolute')
  .setOption('series.1.type', 'LineChart')
  .setOption('series.2.type', 'LineChart')
  .setOption('series.3.type', 'LineChart')
  .setOption('series.4.type', 'ColumnChart')
  .setOption('series.5.type', 'ColumnChart')
  .setOption('series.6.type', 'ColumnChart')
  .setOption('series.7.type', 'ColumnChart')
  .setOption('series.8.type', 'ColumnChart')
  .setOption('series.9.type', 'ColumnChart')
  .setOption('series.10.type', 'ColumnChart')
  .setOption('series.11.type', 'ColumnChart')
  .setOption('series.12.type', 'ColumnChart')
  .setOption('series.13.type', 'ColumnChart')
  .setOption('series.14.type', 'ColumnChart')
  .setOption('series.15.type', 'ColumnChart')
  .setOption('series.16.type', 'ColumnChart')
  .setOption('series.17.type', 'ColumnChart')
  .setOption('series.18.type', 'ColumnChart')
  .setOption('series.19.type', 'ColumnChart')
  .setOption('series.20.type', 'ColumnChart')
  .setOption('series.21.type', 'ColumnChart')
  .setOption('series.22.type', 'ColumnChart')
  .setOption('series.23.type', 'ColumnChart')
  .setOption('series.24.type', 'ColumnChart')
  .setOption('series.25.type', 'ColumnChart')
  .setOption('series.26.type', 'ColumnChart')
  .setOption('series.27.type', 'ColumnChart')
  .setOption('series.28.type', 'ColumnChart')
  .setOption('height', 505)
  .setOption('width', 817)
  .setPosition(1, 3, 116, 4)
  .build(); 
  newSheet.insertChart(chart);
};

在Google工作表中,可以有动态值和静态值

在应用程序脚本和API端,您可以通过以下方式获取这些值:

  • 公式-动态值
  • 值-静态值
  • 显示值-值的“静态”版本
在本例中,您希望在某个时间点保留公式的值。为此,您需要保存这些值的“静态”版本

您需要使用以获取将显示的值(而不是公式),然后将值设置为具有

以下是一些示例代码:

function freezeImportRange() {
  var importRangeUrl = "https://docs.google.com/spreadsheets/d/11lx7OPRXTV9xwqhCVcFPcpL43glyy_9y-PPIC1ADzhk/edit#gid=0";
  var importRangeA1 = "Sheet1!A:C";


  var importedValues = SpreadsheetApp.openByUrl(importRangeUrl).getRange(importRangeA1).getDisplayValues();

  var newSheet = SpreadsheetApp.create("New Sheet");
  var ss = newSheet.getSheetByName(newSheet.getSheets()[0].getName());

  ss.getRange(1, 1, importedValues.length, importedValues[0].length).setValues(importedValues);

}


你能解释一下你想要实现什么吗?在设置导入公式后,getDisplayValues()并在工作表中设置这些值。这个@casper的代码是什么?你说的“在工作表中设置这些值”是什么意思?当你设置导入范围时,它会填充工作表。因此,通过使用,您可以获取它实际显示的值(因此您可以获取值而不是公式)。然后将这些显示值设置为图纸中的值时,会使动态数据成为静态数据。因此,它将不再改变。它可以工作,但你忘记了图表功能?var图表的效果如何?它工作正常,但你忘记了图表,必须插入!那会是什么样子?如果你答对了,我可以把你的答案标记为正确的!:)您可以使用与答案相同的逻辑插入图表。这不起作用:(它在旧工作表中插入图表,但不在新工作表中!@greenster10这似乎是一个新问题。您的问题“如何插入importRange函数并防止值在实现后更改?”得到了回答。