【问题标题】:Google script Copy value of formula result谷歌脚本复制公式结果的值
【发布时间】:2021-07-02 19:10:18
【问题描述】:

我必须将三个单元格从一个工作表复制到另一个工作表才能处理该工作表上的公式。然后我需要将公式输出复制到第一张纸上。 我的副本适用于“输入单元格”,但是当我对公式单元格使用同一行代码时,它不会采用正确的输入值。我想我需要先选择一个单元格来遍历这些值,但它不起作用。 这是原始代码。

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});

谢谢

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

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

    【讨论】:

    • 拿我用一小撮盐做的代码缩短。只是避免靠近换行符。
    猜你喜欢
    • 1970-01-01
    • 2018-07-20
    • 1970-01-01
    • 1970-01-01
    • 2021-04-14
    • 1970-01-01
    • 1970-01-01
    • 2015-04-15
    • 1970-01-01
    相关资源
    最近更新 更多