google-apps-script - 谷歌脚本复制公式结果的值
问题描述
我必须将三个单元格从一张表复制到另一张表才能处理该表上的公式。然后我需要将公式输出复制到第一张纸上。我的副本适用于“输入单元格”,但是当我对公式单元格使用同一行代码时,它不会采用正确的输入值。我想我需要先选择一个单元格来遍历这些值,但它不起作用。这是原始代码。
var spreadsheet = SpreadsheetApp.getActive();
//copy values for formula cells
spreadsheet.getSheetByName('Sheet6').getRange(2,3).copyTo(spreadsheet.getSheetByName('student').getRange(1,1).activate(), {contentsOnly:true});
spreadsheet.getSheetByName('Sheet6').getRange(2,4).copyTo(spreadsheet.getSheetByName('student').getRange(2,1).activate(), {contentsOnly:true});
spreadsheet.getSheetByName('Sheet6').getRange(2,5).copyTo(spreadsheet.getSheetByName('student').getRange(3,1).activate(), {contentsOnly:true});
//copy formula output to sheet
spreadsheet.getSheetByName('student').getRange(2,22).copyTo(spreadsheet.getSheetByName('Sheet6').getRange(2,6).activate(), {contentsOnly:true});
谢谢
解决方案
对单元格的所有更改都将被缓冲,直到脚本处理结束。因此,您需要将该.flush()
方法应用于学生电子表格。
var studentSheet = spreadsheet.getSheetByName('student');
var sourceSheet = spreadsheet.getSheetByName('Sheet6');
// copyTo rows
sourceSheet.getRange(2, 5)
.copyTo(studentSheet.getRange(3, 1), {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(2, 22)
.copyTo(sourceSheet.getRange(2, 6), {contentsOnly: true});
flush()的文档。
推荐阅读
- c# - 使用 EF Core Include 连接 ExpressionVisitor
- vuejs2 - VUE CLI-3 项目不适用于 IE-11
- powerquery - Power Query 合并名称符合条件的列子集
- android - 在本机反应中获取平面列表中的行明智状态
- python - Python/Pandas 用于求解分组均值、中值、众数和标准差
- xml - 什么是TVB 3.2
- python - python - 使用多列融化/重塑
- html - 如何将 html 数据从 Google 侧边栏传递到 gs 代码中的变量
- video - VP9 的每帧元数据
- python - 在 Keras 中实现对抗性损失