0

Google アプリ スクリプトで Spreadsheet Services を使用して、インターネットからデータを取得し、少しいじっています。問題は、データセットが数行よりも大きい場合に ImportHtml 値を設定すると、インポートされた範囲にすぐにアクセスできないため、スクリプトでエラーがスローされることです。

例:

// create tmp sheet and import some data.
var sheet = this.createTmpSheet(); // custom method to create a temp sheet.
sheet.getRange('A1').setValue('=ImportHtml("someUrl","table",1)');
// at this point usually I can access the range
var range_to_copy = sheet.getDataRange();
// However if the data is more than 10-15 rows I get invalid dimention for range..

インポートの「準備」を待つ方法はありますか? 通常のトリガーはどれも適切な選択とは思えませんでした。必要なのは、インポートが完了すると通常 10 秒以内に通知されるようにフロー制御を行うことだけです。

4

2 に答える 2

0

そのようにしないでください。urlFetch を使用してデータを取得し、自分でスプレッドシートに書き込みます。

于 2013-08-27T13:15:41.530 に答える
0

ご指摘のとおり、スプレッドシートの再計算がいつ完了したかを知らせるトリガーはありません。(これは、セル内の数式を更新した後に起こっていることです。)

を使用して、スクリプトを 10 秒間待機させることができますUtilities.sleep(10000);。一般に、遅延に依存するのは悪いプログラミング手法ですが、ここではほぼ唯一の選択肢です。

もう 1 つのオプションは、html クエリを自分で実行し、データのテーブルを配列に解析して、それを新しいシートに書き込むことです。それに興味がある場合は、html div のネストをご覧ください。google fetchurl を使用して、情報テーブルを取得する方法を確認します。

于 2013-08-27T04:18:54.723 に答える