2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【GAS】複数のURLのHTTPステータスコードを取得し結果を書き込む【テスト自動化】

Last updated at Posted at 2022-12-04

google app scriptを使ってテスト自動化ツールを作りました。
機能としてはシンプルで、対象のURLを同じ列の別セルに入力し、実行ボタン押下で結果として「対象ページのHTTPステータスコード」が出力されるといったものです。

成果物は以下です。
■実行前
image.png
■実行後
image.png

※「タイトル」の情報は以下のスプレッドシートの機能で取得します。
 =IMPORTXML(xxx,"//title")
 xxx:対象URLが入力されたセル
 対象URLが数百になる場合、開くときに動作が重くなる場合があります。

※備考:判定結果列は以下のように書き、条件付き書式で色分けをしています。
 =IFS(D6="","",D6<400,"OK",D6>=400,"NG")
 (結果が何もなければ空白、400より小さければ「OK」を出力、400以上なら「NG」を出力)
 ここら辺は各々カスタマイズしてみてください。

■コード
D列へのHTTPステータスコード書き出し機能について、結論から書くと以下のようになります。

コード.gs
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から書き出されます。)

image.png

次にスプレッドシート上に上記の処理を実行するボタンを設置します。
シートに戻って、「挿入」→「図形描画」→「図形」のように移動し、
「ベベル(面取り)」を配置します。
(図形はなんでも良いんですが直感的にボタンぽい方がUIとして優れているかと思います。)

image.png
スプレッドシード上で作成した「ベベル(面取り)」を右クリックして3点リーダーから「スクリプトを割り当て」をクリック。
以下のように作成した関数名を入力してください。
image.png
そしたら最初に示した結果のイメージのように、ボタン押下でHTTPステータスコードがシートに書き込まれるはずです。
おめでとうございます。
読んでくれてありがとうございました。

また。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?