仅在脚本完成时执行

仅在脚本完成时执行

本文介绍了.setValue 仅在脚本完成时执行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

D我的脚本有问题.我的脚本的一部分:

DI have a problem with my Script. a part of my script:

    var a = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("A");
    var b = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("B");

    a.getRange("A14").setValue("external File");
    Utilities.sleep(2000);
    a.getRange("A14:C29").copyTo(b.getRange("A1:C15"), {contentsOnly:true});
    a.getRange("A14:C29").clearContent();

现在我唯一的问题是,不会设置值(外部文件"),我的脚本在脚本停止时首先设置这个值.是否有可能的方法来解决它,请保持它 eZ 我在谷歌脚本中不是那么好:-D

now my only problem is,the Value("external File") will not be set, my script set this value first when the script stops.Is there a posible methode to solve it, pls hold it eZ im not that well at google script :-D

推荐答案

详细说明 @Jack Brown's 评论,当写入和读取电子表格界面时,Google Apps 脚本不一定立即执行写入 - 它会尝试优化电子表格界面上的调用以最小化所需的资源.使用 SpreadsheetApp.flush() 指示 Apps 脚本引擎对电子表格执行任何待处理的更改(写入、由于新写入的数据而计算单元格公式等).

To elaborate on @Jack Brown's comment, when both writing to and reading from the Spreadsheet interface, Google Apps Script does not necessarily immediately perform the write - it will attempt to optimize calls over the Spreadsheet interface to minimize resources needed.Using SpreadsheetApp.flush() instructs the Apps Script engine to perform any pending changes to the spreadsheet (writes, calculations of cell formulas due to newly-written data, etc).

OP 的片段将是:

var a = SpreadsheetApp.getActive().getSheetByName("A");
var b = SpreadsheetApp.getActive().getSheetByName("B");

a.getRange("A14").setValue("external File");

// Force the above value to be written (and any cells that refer to A14 to update).
SpreadsheetApp.flush();

// Without flush(), Apps Script may wait until making these calls to perform the write.
a.getRange("A14:C29").copyTo(b.getRange("A1:C16"), {contentsOnly: true});
a.getRange("A14:C29").clearContent();

这篇关于.setValue 仅在脚本完成时执行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-05 23:57