将公式设置为Google脚本中的值

问题描述 投票:0回答:1

我已经编写了一个生成随机数并将其与文本连接的代码。我正在使用此功能来填充一系列单元格(从A1到Z10):

function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var cell = sheet.getRange("A1:Z10");
cell.setFormula('=CONCATENATE("61", RANDBETWEEN(1000000000, 9999999999), "@text")');
}

问题是,每次我重新加载页面时,都会重新计算数字,没有静态值。我希望范围内的值成为静态值,以便每次重新加载页面时,“ 61”和“ @text”之间的数字均保持不变。我尝试了以下两个代码,但都没有起作用。第一个没有收到错误消息,但是只是没有保持值的静态,而第二个收到错误消息“”

function copyFormulasToValues() { var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sourceSheet = ss.getSheetByName("Sheet1"); 
var destinationSheet = ss.getSheetByName("Sheet1"); 
var range = sourceSheet.getRange(1,1,1,1);
range
  .copyValuesToRange(destinationSheet, 1, 1, range.getNumRows(), range.getNumColumns());
 };

第二个代码:

var studentSheet = SpreadsheetApp.getActiveSpreadsheet();
var sourceSheet = SpreadsheetApp.getActiveSpreadsheet();

// copyTo rows
sourceSheet.getRange(1, 1, 10, 26).copyTo(studentSheet.getRange(1, 1, 10, 26), {contentsOnly: 
true});

SpreadsheetApp.flush(); // applies all values to the student spreadsheet
                    // and therefore all the formula cells update
// get value from calculated formula cell
studentSheet.getRange(1, 1, 10, 26).copyTo(sourceSheet.getRange(1, 1, 10, 26), {contentsOnly: 
true});
}

错误消息:

找不到方法getRange(数字,数字,数字,数字)。 (第11行,文件“代码”)

我只想将值复制并粘贴到同一电子表格中,以便它们保持静态。我该如何实现?

javascript google-apps-script static formula
1个回答
0
投票
  • 您要删除公式并将值放入到相同范围的A1:Z10的单元格中。
  • 公式已经放入电子表格。

如果我的理解是正确的,那么这个答案呢?

模式1:

在此模式下,使用copyValuesToRange

示例脚本:

function copyFormulasToValues() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Sheet1");
  var range = sheet.getRange("A1:Z10");
  range.copyValuesToRange(sheet, 1, range.getNumColumns(), 1, range.getNumRows());
}
  • 我认为您的脚本中的参数可能是错误的。请依次设置sheet, column, columnEnd, row, rowEnd

模式2:

在此模式下,使用copyTo

示例脚本:

function copyFormulasToValues() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var range = ss.getSheetByName("Sheet1").getRange("A1:Z10");
  range.copyTo(range, {contentsOnly: true});
}

参考文献:

如果我误解了你的问题,而这不是你想要的方向,我深表歉意。

© www.soinside.com 2019 - 2024. All rights reserved.