我尝试做的只是调整电子表格中的所有列。这是一个独立的电子表格。我正在使用:
<fieldset><legend class="Headline">Ship To</legend>
<table style="border:1px solid black;"width="100%"> <%--owais--%>
-----------
----------
--------
</table>
<fieldset>
我已经尝试了function format() {
var destination = SpreadsheetApp
.openByUrl("https://docs.google.com/spreadsheets/d/spreadsheetIdHere/edit#gid=0")
.getSheetByName("sheetName");
var columns = destination.getMaxColumns();
destination.setFrozenRows(1);
destination.setFrozenColumns(3);
for (var i = columns; i >= 1; i--) {
Logger.log(i)
destination.autoResizeColumn(i);
}
}
和for (var i = columns; i >= 1; i--)
,因为我不知道导致它的原因。我假设无限循环,但我完全删除了循环,它仍然运行太长时间。
当我注释掉autoResize时,日志会产生预期的结果......大约一秒钟。带回autoResize ...脚本只运行并运行,甚至不会更改任何列。
我尝试取出循环并将一个数字放在for (var i = 1; i <= columns; i++)
中并且有效。把回路带回去,我被卡住了。
autoResizeColums()是否太慢,或者我错过了什么?
如果需要更多信息,请告诉我。
答案 0 :(得分:0)
从问题:
并且脚本只是运行并运行,甚至不会更改任何列。
来自flush():
有时将电子表格操作捆绑在一起以提高性能,例如在对Range.getValue()进行多次调用时。
如果您希望在脚本结束之前查看脚本对电子表格所做的更改,则必须添加SpreadshsheetApp.flush()
。请记住,在官方文档 1 中的不良做法示例中提到了将其添加到循环中。
从问题:
autoResizeColums()是否太慢,或者我错过了什么?
通常,对SpreadsheetApp和其他类似服务的调用非常缓慢。根据我自己的经验,我看到的最慢的调用是使用Properties Service
编写用户属性的9秒