次の数式を約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(/ /g,' ').trim();
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加