Google脚本复制公式结果的值

ck8*_*k88 0 google-sheets 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});
Run Code Online (Sandbox Code Playgroud)

谢谢

JSD*_*ton 6

对单元格的所有更改都会被缓冲,直到脚本处理结束。因此,您需要将该.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});
Run Code Online (Sandbox Code Playgroud)

lush()的文档。