GoogleスプレッドシートのimportHTML関数を置き換えるUrlFetchAppスクリプトを作成する

VforVendetta

次の数式を約1年間使用しましたが、突然テーブルの動作/インポートが停止しました。

=IMPORTHTML("https://tradingeconomics.com/matrix";"table";1)

「URLを取得できませんでした: https://tradingeconomics.com/matrix」エラーが表示されます。

私はさまざまなことを試しましたが、興味深い発見の1つは、importHTMLがキャッシュされたバージョンで機能することですが、別のGoogleアカウントの新しいシートでのみ機能します。さらに、キャッシュされたバージョンもランダムに壊れます。

したがって、この目的でスクリプトを使用することは避けられないようです。

理想的には、このスクリプトは十分な柔軟性があり、ユーザーがURLとテーブル番号を入力できるimportHTMLtableなどの専用関数があります。そしてそれは動作します。したがって、現在使用している次の関数で機能します。

=importHTMLtable("https://tradingeconomics.com/matrix";"table";1)

また

=importHTMLtable("https://tradingeconomics.com/country-list/business-confidence?continent=world";"table";1)

また

=importHTMLtable("https://tradingeconomics.com/country-list/ease-of-doing-business";"table";1)

等...

このGithubコードがこの問題を解決するかどうかはわかりません。テキストを解析するだけのようですか?

これはGoogleスプレッドシートのユーザーが抱えるかなり一般的な問題であり、これを正確に実行し、インポート速度の点でも高速なAppScriptがすでに存在する可能性があると思います。

プログラムできないので、コードをコピーして投稿して、コードが機能するかどうかを確認しました。運がない:(

誰かがコードまたはおそらくこれを正確に行う既存のアプリスクリプト(私は知りません)を提供できますか?

マイク・スティールソン

この方法を試してください

=importTableHTML(A1,1)

function importTableHTML(url,n){
  var html = UrlFetchApp.fetch(url,{followRedirects : true,muteHttpExceptions: true}).getContentText().replace(/(\r\n|\n|\r|\t|  )/gm,"")
  const tables = [...html.matchAll(/<table[\s\S\w]+?<\/table>/g)];
  var trs = [...tables[n-1][0].matchAll(/<tr[\s\S\w]+?<\/tr>/g)];
  var data = [];
  for (var i=0;i<trs.length;i++){
console.log(trs[i][0])
    var tds = [...trs[i][0].matchAll(/<(td|th)[\s\S\w]+?<\/(td|th)>/g)];
    var prov = [];
    for (var j=0;j<tds.length;j++){
      donnee=tds[j][0].match(/(?<=\>).*(?=\<\/)/g)[0];
      prov.push(stripTags(donnee));
    }
    data.push(prov);
  }
  return(data)
}
function stripTags(body) {
  var regex = /(<([^>]+)>)/ig;
  return body.replace(regex,"").replace(/&nbsp;/g,' ').trim();
}

ここに画像の説明を入力してください

url-fetch-app#advanced-parameters

matchAll

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Googleスプレッドシートの関数のテキストを(スクリプトで)置き換える

Googleスプレッドシートの複数の文字列をスクリプトに置き換えます

アプリスクリプトを使用して、Googleスプレッドシートに見つからない関数を置き換えます

Googleスプレッドシートからデータを自動的に取得し、スライドテンプレートのタグを置き換える関数を作成するにはどうすればよいですか?

文字列クエリを置き換える関数を作成すると、ストアドプロシージャの速度が低下します

Googleスプレッドシート-配列内の数式の特定の部分を置き換える

Googleスプレッドシートスクリプトを見つけて置き換えます

クエリ結果のGoogleスプレッドシートから#N / Aを置き換えます

Googleスプレッドシートの文字の後のすべてを置き換える

Googleスプレッドシートのクエリ:値のリストを追加してセルの値を置き換える

Googleスプレッドシート、整数を文字列に置き換える

空のセルをセルの値に置き換えるGoogleスプレッドシートスクリプト

他の多くのスプレッドシートのコンテンツと数式を置き換えるスクリプト

スクリプトを使用して、Googleスプレッドシートのセル内のテキストを置き換えます

GoogleスプレッドシートのチェックボックスでimportHTMLを更新するスクリプト

GoogleスプレッドシートのIF数式をAppsスクリプトに変換する

Googleスプレッドシート+アプリスクリプト:showDialogボックスを使用して値を見つけて置き換えます

GoogleスプレッドシートスクリプトgetUsername()の値をイニシャルに置き換えます

Google Apps Scriptを使用して、Googleスプレッドシートテンプレートのテキストを置き換えて新しいシートを作成するにはどうすればよいですか?

Googleスプレッドシートのスクリプトは、4つの異なる列で値がtrueの場合にのみ、True値をチェックボックスに置き換えます

Googleスプレッドシート/ Excel:n番目ごとのスペースを置き換えます

PythonスクリプトをGoogleスプレッドシートスクリプトに変換する

シェルスクリプト内の変数を置き換えるSEDステートメント

シェルスクリプト内の変数を置き換えるSEDステートメント

Googleスプレッドシートのオプションのリストに基づいて、セルのコンテンツを置き換えます

Googleスプレッドシートで絵文字をテキストの説明に置き換えるにはどうすればよいですか?

Googleスプレッドシートのテキストを置き換えるにはどうすればよいですか?

Googleスプレッドシートの値のリストを処理するオートコンプリート関数をGoogleスクリプトで作成する

Apps Scriptを使用して、重複する行をGoogleスプレッドシートの新しいデータに置き換えます

TOP 一覧

  1. 1

    どのように関係なく、それがどのように「悪い」、すべてのSSL証明書でのHttpClientを使用しないように

  2. 2

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  3. 3

    Modbus Python Schneider PM5300

  4. 4

    System.Data.OracleClient.OracleException:ORA-06550:行1、列7:

  5. 5

    scala.xmlノードを正しく比較する方法は?

  6. 6

    インデックス作成時のドキュメントの順序は、Elasticsearchの検索パフォーマンスを向上させますか?

  7. 7

    Elasticsearch - あいまい検索は、提案を与えていません

  8. 8

    グラフ(.PNG)ファイルをエクスポートするZabbix

  9. 9

    Ansibleで複数行のシェルスクリプトを実行する方法

  10. 10

    変数値を含むElasticSearch検索結果

  11. 11

    Elasticsearchでサーバー操作を最適化:低いディスク透かしに対処する

  12. 12

    Python / SciPyのピーク検出アルゴリズム

  13. 13

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  14. 14

    テキストフィールドの値に基づいて UIslider を移動します

  15. 15

    Chromeウェブアプリのウェブビューの高さの問題

  16. 16

    NGX-ブートストラップ:ドロップダウンに選択したアイテムが表示されない

  17. 17

    Reactでclsxを使用する方法

  18. 18

    STSでループプロセス「クラスパス通知の送信」のループを停止する方法

  19. 19

    Pushwooshで削除されたアプリデバイストークンを処理する方法は?

  20. 20

    ラベルとエントリがpythontkinterに表示されないのはなぜですか?

  21. 21

    Elasticsearchの場合、間隔を空けた単語を使用したワイルドカード検索

ホットタグ

アーカイブ