質問: InstagramやTwitterのIDのリストがあり、それらが実際にweb上に存在しているかどうかを効率的に確認したいです。 具体的には、以下のようなリストがあったときに、都度自分で検索して存在しているかどうか確認するのではなくって、自動でwebで検索して存在しているかどうか確認したいです。 Twitter: @aaaaa @bbbbb @ccccc @ddddd Instagram: @eeeee @fffff @ggggg @hhhhh 理想は、Google スプレッドシートに管理しているリストに、存在しているかどうかの結果も含めて保管したいです。 なんとなく自分がいま想像しているのは、 ・Google スプレッドシートのIMPORTHTML関数を使う? ・TwitterやインスタグラムのAPIを使う? ・ こういった記事は読みました。 Twitterとインスタグラムとでは取得方法がそれぞれ異なるとは思うのですが、ご存知の方教えていただけると幸いです。どうぞよろしくお願いします。
回答: 規約上このようなプログラムの実行が適法であるかどうかは、弁護士に相談してください。あくまで技術面での回答です。 アカウントリストっていうシートのA列に(ここでは3個ってことにしています)アカウントが入っているとします(@はかかないでください)。 実行するとB列にtwitterにいるかいないか、C列にいんすたにいるかいないか書き込まれます。 (アカウントの個数を増やしたときの挙動については考慮していません。つまり沢山やれば時間がかかりすぎていると判定されて強制終了される可能性があります。また仮にgoogleがスクリプトの実行を許可したとしても、そのことからtwitterやinstagramの規約を破っていないとはいえません。場合によっては業務妨害行為となるリスクがありますので、前記のとおり弁護士にご相談ください、私は規約を確認しておりませんし、規約を無視または規約に違反して実行することを推奨しておりません。下記コードの実行および実行に起因する一切の問題について責任を負えません。規約の意味が分からないのであれば、テスト目的であっても実行しないでください。また質問者・閲覧者が行為能力に制限があって後見人等の同意を得ていない場合(=有効に利用規約に同意できない場合)も実行しないでください) ``` function myFunction() { var vals = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("アカウントリスト").getRange("A1:C3").getValues(); for(var i = 0; i < vals.length; i++) { var id = vals[i][0]; var statI = UrlFetchApp.fetch("https://twitter.com/"+id ,{muteHttpExceptions: true,}).getResponseCode(); vals[i][1] = (statI === 200) ? "いる" : "いない" ; var statT = UrlFetchApp.fetch("https://www.instagram.com/"+id ,{muteHttpExceptions: true,}).getResponseCode(); vals[i][2] = (statT === 200) ? "いる" : "いない" ; } SpreadsheetApp.getActiveSpreadsheet().getSheetByName("アカウントリスト").getRange("A1:C3").setValues(vals); } ```