すごーく久々の更新。
大した内容じゃないんだけどもね。
ここ最近、ずっとルールでガッチガチで創意工夫しようもない仕事ばっかりやってたんだけども、10月から新しい業務に携わる様になりまして。
いろいろ工夫が必要なシーンが増えそうなので、また少しづつネタ更新しようかな。という感じでした。
さて、そんなこんなで今回のテーマも他愛のない思いつき小ネタです。
?ハウスリストを整理してほしい!
唐突にこんなこと言われた訳です。
去年からウェビナーで集客をするようになってて、インバウンド営業で忙しい日々を過ごしていたが、ウェビナー申込者のメールアドレスがスプシにめっちゃ溜まっとるが整理ができておらんのだと。
キチンとCRMシステムに取り込んでメールマーケティングに活用したいと。
んで、ざーっと要件確認してて思いついたスクリプトのお話ダヨ。
?イマドキのCRMシステムって賢い!
SaaSのCRMシステムを使ってたんだけども、よく見ると会社情報を登録するときにホームページのURLを投入すると会社情報引っ張ってきてくれたりするんですよねぇ~
この機能活用したいなーと思って、ウェビナーで収集したハウスリストに会社URL情報を埋め込んでおいてCSV取り込みしたいなーって思った訳です。
ただ、対象はウェビナーで登録されたメールアドレスなんでフォーム入力で自今申告してる会社名と必ず一致してる訳でもない。(gmailとか個人アドレスで登録されてる方も結構いる。)
と、いうことでとりあえずメールアドレスのドメインだけ引っ張りつつ、そのドメインでWebページがあるかだけチェックしたいなーって思いましたとさ。
?リクエスト送ってレスポンス200だけ確認
とりあえず、メールアドレスは適当にシート関数でドメインだけにしとく。
=MID(ASC(A1),FIND("@",ASC(A1))+1,999)
なんか謎に@が全角になってるケースがあったからASC関数で強制的に半角に。
ほんで、ドメインだけ切り取った列作っといてあとはGoogle Apps Scriptでぺぺーっとね。
function myFunction() { const sid = 'シートID'; var ss = SpreadsheetApp.openById(sid); var sheet = ss.getSheetByName('シート名'); for(let i=開始行; i < 終了行; i++){ try{ var url = sheet.getRange(i,1).getValue(); var revurl = sheet.getRange(i-1,1).getValue(); if (url != revurl) { sheet.getRange(i,2).setValue(UrlFetchApp.fetch(url).getResponseCode()); } Logger.log(i); }catch(e){} } }
いや、本当に適当で申し訳ないんだけども使うのも1回ぽっきりだしねー・・・?
シートID・シート名・開始行・終了行 を書き換えて実行するよ。
そしたら、ドメインに対してfetchコマンドでHTTP GETしてレスポンスコードが200だったらB列に200でマーキングする。
404になるとスクリプトエラーになっちゃうみたいだったから空tryで括って強制無視(笑)
アドレス大量にあったから1行上と同じドメインはスキップ(先に重複削除したら行ズレちゃうから)
今回のリストは3000件近くあって処理長すぎて途中でタイムアウト終了しちゃったからLoggerに実行行数カウントだけ吐かせて開始行切り替えながらとりあえず力業で最後までホムペ確認。
って感じ??
ちゃんとスクレイピングしろよとかいろいろあるかもしれんが、まぁ今回は片手間にこんなんでチャチャッとデータ仕分けしましたとさって話でした?
乱暴な方法だけど、半分放置でURL欄まぁまぁ埋められたからよかったねってことで!ではまたね✋