1

私は現在、1日1回のイベントで、6か月間で50人のGoogleカレンダーを作成することを目的としたスクリプトを作成しています。これらのイベントは、開始時間と終了時間が異なり、終日のイベントである場合とそうでない場合があります。カレンダーはすべて同じGoogleアカウントで作成され、ユーザーは個人アカウントを使用してカレンダーを購読します。

カレンダーのデータは、もともとGoogleスプレッドシートに保存されています。私のスクリプトは、推奨されているように、getRange.getValuesメソッドを使用してこのスプレッドシートを1つのステップで読み取りますが、forループ内で.createEventメソッドを使用する以外に、書き込みを「バッチ処理」する方法を見つけることができません。このループは、実行するには長すぎるため、途中で約1/10で強制終了されます(バッチ全体で約9000のカレンダーイベント、5分の範囲を超えています)。

.createEvent行をコメントアウトすると、スクリプトは完全に正常に実行されます。

Googleカレンダーへの書き込みを最適化する方法はありますか(配列を.createEventなどに渡す...)?

4

1 に答える 1

0

CalendarAPIのバッチメソッドはありません。「スロー」ループに1つずつ挿入する必要があります。

スクリプトで使用する解決策は、負荷を「実行可能な」チャンクに分割することです。処理したかどうかに関係なく、各行に保存できます。または、最後に停止した行をどこかに保存することもできます(セルやスクリプトのプロパティなど)。次に、スクリプトが共有を実行したときに自動的に停止するようにスクリプトを構成します(例:3000イベント)。

すでにご覧になったかどうかはわかりませんが、さまざまなAPIの割り当てを確認できる新しいダッシュボードがあります。この制限時間の割り当てを解決すると、カレンダーに遭遇するようです。良いニュースは、この負荷ソリューションの広がりがそれに対処するのにも役立つということです。

于 2012-05-08T00:55:43.797 に答える