为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Google 脚本中将公式设置为值?

如何在 Google 脚本中将公式设置为值?

青春有我 2021-11-04 16:40:01
我编写了一个生成随机数并将它们与文本连接起来的代码。我正在使用此函数来填充一系列单元格(从 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 rowssourceSheet.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 cellstudentSheet.getRange(1, 1, 10, 26).copyTo(sourceSheet.getRange(1, 1, 10, 26), {contentsOnly: true});}错误信息:找不到方法 getRange(number,number,number,number)。(第 11 行,文件“代码”)我只想将值复制并粘贴到同一个电子表格中,以便它们保持静态。我怎样才能做到这一点?注意 1.我真的很感谢田内池的帮助。我尝试了该脚本(已在下面发布),但是当我尝试运行它时,该函数会运行代码,然后完全删除这些值。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.com")');var ss = SpreadsheetApp.getActiveSpreadsheet();var sheet = ss.getSheetByName("Sheet1");var range = sheet.getRange("A1:Z10");range.copyValuesToRange(sheet, 1, range.getNumColumns(), 1, range.getNumRows());}也许我做错了什么?
查看完整描述

1 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

您想删除公式并将值放入A1:Z10相同范围的单元格中。

公式已被放入电子表格。

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


模式一:

在这种模式中,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});

}

在这种情况下,请使用copyToClass Range。


查看完整回答
反对 回复 2021-11-04
  • 1 回答
  • 0 关注
  • 164 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信