2017-01-02 2 views
0

У меня есть два похожих сценария, которые запускаются на двух разных электронных таблицах каждый день в полночь, срабатывающие во время событий. Я не знаю, почему, но с нескольких дней мой сценарий больше не выполняется, и я получил следующую ошибку в моем почтовом ящике: Service using too much computer time for one dayПопытка понять ошибку службы, вызванную ограничением квот.

Итак, я посмотрел Google Apps Quotas guide, но я не совсем понимаю. Я не понимаю, какая часть моего скрипта достигает определенного ограничения, и что я должен делать, чтобы решить эту проблему.

Вот мой сценарий:

function saveData() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheets()[0]; 
    var data1 = sheet.getRange('data!B3').getValue(); 
    var data2 = sheet.getRange('data!C3').getValue(); 
    var data3 = sheet.getRange('data!D3').getValue(); 
    var data4 = sheet.getRange('data!E3').getValue(); 
    var data5 = sheet.getRange('data!F3').getValue(); 
    var data6 = sheet.getRange('data!A3').getValue(); 
    sheet.appendRow([data1,data2,data3,data4,data5,data6]); 
} 

Любой намек? Это потому, что я использую слишком много одного и того же метода? Какие квоты на это ссылаются?

Спасибо!

ответ

1

Я не уверен, в чем проблема, но ваш код может уменьшить количество вызовов getRange, это будет немного чище и немного быстрее. Я предполагаю, что лист [0] называется данными:

function saveData() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheets()[0]; 
    var data = sheet.getRange('A3:F3').getValues()[0]; 
    sheet.appendRow([data[1],data[2],data[3],data[4],data[5],data[0]]); 
} 
0

В соответствии с руководством Google Quotas: «Обслуживание, использующее слишком много времени на компьютер в течение одного дня: это означает, что сценарий превысил общее допустимое время выполнения на один день. Это чаще всего встречается для скриптов, запускаемых на триггере, что имеют более низкий дневной лимит, чем скрипты, выполняемые вручную ».

Триггеры не могут работать более 30 секунд.

Ваш скрипт может превышать это время выполнения.

+0

Благодарим за это. мои скрипты выполняются в 2-3 секунды ... –

+1

Не знаете, откуда вы это взяли. Функция, вызываемая триггером, может работать в течение 6 минут. Все триггеры в сочетании вы можете иметь общую продолжительность работы 90 минут в учетной записи gmail.com. @SimonBreton, может быть, у вас больше триггеров? Помните, что ** все ** запускает настройку вашей комбинированной учетной записи не может длиться дольше 90 минут в день. И обратите внимание на ответ utphx, чтобы ваши данные читались, нет необходимости использовать 'getRange()', что много раз в вашей функции – Vytautas

+0

Спасибо @Vytautas Я только что очистил весь свой триггер и рефакторинг моего скрипта после рекомендации utphx. То, что я не знал, это то, что я использую надстройки Google Sheet, которые добавляют некоторые триггеры в мою учетную запись для обновления данных. Завтра я сделаю так, что сейчас все в порядке, и предложим итоговые ответы. –

0

Благодаря всем комментариям и ответам я решу проблему. Я очищаю список триггеров, доступных из редактора сценариев (ressources => список триггеров). Я обнаружил некоторые триггеры, о которых я не знал, в каких случаях добавляются дополнения Google Диска, которые я использую. Я также реорганизую свой код так, как мне советуют utphx.

Смежные вопросы