Почему Autoseizecolumn () Loop, похоже, замораживает сценарий Google Apps? -- javascript поле с участием for-loop поле с участием google-apps-script поле с участием google-sheets пол Связанный проблема

Why does an autoResizeColumn() loop seem to freeze a Google Apps Script?


0
vote

проблема

русский

Все, что я пытаюсь сделать, это изменить размер всеми колонны в электронной таблице. Это автономная электронная таблица. Я использую:

 <код> 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--) и <код> for (var i = 1; i <= columns; i++) только потому, что я не знаю, что это вызывает. Я предполагал бесконечную петлю, но я полностью удалил цикл, и она все еще проходит слишком долго.

Журнал производит ожидаемые результаты, когда я прокомментую ауторезацию ... и примерно в секунду. Верните автосалон ... и скрипт просто работает и работает, и даже не меняет никаких столбцов.

Я пытался вынуть петлю и положить одно число в <код> autoResizeColumn(227) и который работал. Верните петлю назад, и я застрял.

Авторезидзеколум () просто слишком медленно, или я что-то упускаю?

Дайте мне знать, если нужна дополнительная информация.

Английский оригинал

All I'm trying to do is resize all the columns in a spreadsheet. This is a standalone spreadsheet. I'm using:

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

I've tried both for (var i = columns; i >= 1; i--) and for (var i = 1; i <= columns; i++) just because I don't know what's causing it. I was assuming an endless loop, but I removed the loop entirely and it still runs for way too long.

The log produces expected results when I comment out the autoResize... and in about a second. Bring back autoResize... and the script just runs and runs, and doesn't even change any columns.

I tried taking out the loop and putting a single number in autoResizeColumn(227) and that worked. Bring the loop back and I'm stuck.

Is autoResizeColums() just too slow, or am I missing something?

Let me know if more info is needed.

</div
           
 
 

Список ответов

0
 
vote

Часть 1

От вопроса:

и скрипт просто работает и работает, и даже не меняет никаких столбцов.

из flush () :

.

операции электронных таблиц иногда соединяются вместе, чтобы улучшить производительность, например, при выполнении нескольких вызовов на Range.getValue ().

Если вы хотите увидеть изменения, сделанные вашим сценарием к электронной таблице перед заканчиваются сценарием, вы должны добавить <код> SpreadshsheetApp.flush() . Помните, что, но добавляя его внутри петли, упоминается на примере плохих практик на официальной документации 1 .

1 : Лучшие практики

Часть 2

От вопроса:

Авторезидзеколум () просто слишком медленно, или я что-то упускаю?

Вообще звонки в SpreadsheetApp и другие подобные услуги очень медленные. В моем собственном опыте самый медленный звонок, который я видел, - это 9 секунд, чтобы написать свойство пользователя, используя HTTPS:///developers.google.com/apps://developers.google.com/apps-script/guide/poogle.com/apps-script/guide/properties "Rel =" Nofollow noreferrer " > Свойства Сервис

 

Part 1

From the question:

and the script just runs and runs, and doesn't even change any columns.

from flush():

Spreadsheet operations are sometimes bundled together to improve performance, such as when doing multiple calls to Range.getValue().

If you want to see the changes made by your script to the spreadsheet before the script ends, you have to add SpreadshsheetApp.flush(). Bear in mind that but adding it inside a loop is mentioned in an example of bad practices on the official documentation1.

1: Best practices

Part 2

From the question:

Is autoResizeColums() just too slow, or am I missing something?

In general the calls to SpreadsheetApp and other similar services are very slow. In my own experience the slowest call that I saw is 9 seconds to write a user property by using the Properties Service

</div
 
 
   
   

Связанный проблема

2  Fullcalendar сейчас () индикатор позиционируется неправильно  ( Fullcalendar now indicator positioned wrongly ) 
в Fullcalendar, при настройке параметров Mintime и maxtime ныне () индикаторы не расположены должным образом. У меня есть jsfiddle , чтобы пока...

0  Как вы загружаете файл JavaScript в объем  ( How do you load a javascript file into a scope ) 
Я пытаюсь выяснить, как загрузить содержимое файла JavaScript в объем. Причина этого я хочу иметь возможность иметь возможности подключения и воспроизведения ...

0  OnClick = "Commentcheck ({{Meeting.people}})", ожидаемый идентификатор, строка или номер  ( Onclick authoritycheckmeeting people expected identifier string or num ) 
У меня возникли проблемы с отправкой <код> {{meeting.people}} Value на функцию JS. Код подписан на Сообщение об ошибке говорит: ожидаемый идентификатор, ст...

0  Google Map не отображает  ( Google map not displaying ) 
У меня есть карта Google, которая используется здесь: http://www.comehike.com/outdoors/birds/birds.php Теперь я вижу сообщения об ошибках .j для 1) Инициа...

0  Нужна помощь в создании массива JavaScript от заданных объектов  ( Need help building a javascript array from given object values ) 
Это объект, который у меня есть. <код> var MyObject = { 'stop1-start': "0", 'stop1-color': "#0074a2", 'stop2-start': "32", 'stop2-color...

0  Как создать таблицу столбцов с несколькими сериями в Sapui5  ( How to create a column chart with multiple series in sapui5 ) 
Я пытаюсь создать столбчатую таблицу для моих данных <код> var oData = { Names:[ { store: "Gucci...

-9  Как я могу разрушить свойство объекта от вызова API?  ( How can i destructure an object property from an api call ) 
Учитывая эту API RenderUser , как мне разрушить API для получения <код> results код> свойство? ...

0  Получите текущий пользователь SharePoint с JavaScript  ( Get sharepoint current userkey with javascript ) 
Я пытался получить текущие пользователи ключа ключа со многими другими способами, но ни один из них не работал, как хотел. Мне нужно получить текущий ключ Spu...

15  Как помешать PreservedRawingBuffer в Three.js?  ( How to toggle preservedrawingbuffer in three js ) 
В принципе, я хочу установку, где я мог пойти к PreservedRawingBuffer = True, оказывайте сцену один раз, возьмите скриншот и вернитесь. Тем не менее, это пред...

0  Скрывая неупорядоченный список, когда у него нет элементов  ( Hiding an unordered list when it has no elements ) 
У меня есть проблема, которая кажется сначала, как общий язык No-Brainer и легкая задача. У меня есть плагин JavaScript на моей странице, который генерирует...

1  Функциональность ломтики массива JavaScript на картах JavaScript  ( Javascript array slice functionality in javascript maps ) 
в массивах JavaScript у нас есть один метод под названием Slice, который возвращает неглубокую копию части массива. Можно ли сделать то же самое в картах JS. ...

0  в то время как цикл превышает каждый метод  ( While loop over takes the each method ) 
Я добавляю элемент на страницу, используя статический номер в соответствии с кликом пользователя. Таким образом, элемент имеет серийный номер в соответствии с...

0  JavaScript цепи много функций  ( Javascript chaining many function ) 
newbe в JavaScript, Я 4 функции, скажем: <код> function funct1(){ //dosomething(); } function funct2(){ //dosomething(); } function funct3(){ ...

1  Удалить таблицу TR при сохранении AddClass  ( Remove table tr while maintaining addclass ) 
Хорошо, у меня есть таблица TR, которая удаляется, когда вы нажимаете кнопку. Я использую Animate.css и хотел бы добавить класс после того, как мой запрос AJA...

-1  Что не так с этим кодом jQuery, его сумасшедшая? [закрыто]  ( What is wrong with this jquery code its driving my crazy ) 
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»> закрыт. Этот вопрос не соответствует Рекомендациям переполнения ...