google app scriptを使ってテスト自動化ツールを作りました。
機能としてはシンプルで、対象のURLを同じ列の別セルに入力し、実行ボタン押下で結果として「対象ページのHTTPステータスコード」が出力されるといったものです。
※「タイトル」の情報は以下のスプレッドシートの機能で取得します。
=IMPORTXML(xxx,"//title")
xxx:対象URLが入力されたセル
対象URLが数百になる場合、開くときに動作が重くなる場合があります。
※備考:判定結果列は以下のように書き、条件付き書式で色分けをしています。
=IFS(D6="","",D6<400,"OK",D6>=400,"NG")
(結果が何もなければ空白、400より小さければ「OK」を出力、400以上なら「NG」を出力)
ここら辺は各々カスタマイズしてみてください。
■コード
D列へのHTTPステータスコード書き出し機能について、結論から書くと以下のようになります。
function getStatusCode() {
//書き込み先のスプレッドシートファイル
let ss = SpreadsheetApp.getActiveSpreadsheet();
//書き込み先のシート
let sheet = ss.getActiveSheet();
//シートの行数をB列で数える
const sprt_values = sheet.getRange('B6:B').getValues();
//空白の要素を除いた長さを取得
const sprt_lastrow = sprt_values.filter(String).length;
//配列で取得(xx行目、xx列、xx列の長さ、取得する列数)
const sheet_data = sheet.getRange(6, 2, sprt_lastrow, 1).getValues();
//取得した行の数だけステータスコードを確認+シートへの書出を行う
for (let i = 0; i < sprt_lastrow; i++) {
//sheet_dataは二重配列になっているので、i番目の0番目(1個目)の要素を、入力されるURLとする
let url = sheet_data[i][0];
//Webサイトの情報取得
//muteHttpExceptionsを有効化することで404などエラーの場合でもレスポンスを返すようにする
let response = UrlFetchApp.fetch(url, {muteHttpExceptions: true})
//実行ログへの結果の書き出し(任意)
console.log(sheet_data[i][0] + " ステータスコード:" + response.getResponseCode());
//シートへの結果の書き出し
//書き出し範囲を取得する
let range = sheet.getRange(6 + i,4);
//取得したWebサイトの情報からレスポンスコードの情報を書き出す
range.setValue(response.getResponseCode());
}
}
以上ですね。コードの解説は省略します。コメント文を参考にしてください。
エディタ上でのイメージは以下です。
矢印に示す「▶︎実行」ボタンから実行すると動作します。
(対象URLを書く位置は最初のイメージ画像のようにB6から下に書いてください。結果がD6から書き出されます。)
次にスプレッドシート上に上記の処理を実行するボタンを設置します。
シートに戻って、「挿入」→「図形描画」→「図形」のように移動し、
「ベベル(面取り)」を配置します。
(図形はなんでも良いんですが直感的にボタンぽい方がUIとして優れているかと思います。)
スプレッドシード上で作成した「ベベル(面取り)」を右クリックして3点リーダーから「スクリプトを割り当て」をクリック。
以下のように作成した関数名を入力してください。
そしたら最初に示した結果のイメージのように、ボタン押下でHTTPステータスコードがシートに書き込まれるはずです。
おめでとうございます。
読んでくれてありがとうございました。
また。