2020年6月13日土曜日

Googleフォームを使って、ヤフオクの出品URLから、価格や残り時間を抽出する方法

Googleフォームを使って、ヤフオクの出品URLから価格や残り時間を抽出する方法

Googleフォームを使えば、ヤフオクの出品URLから価格や残り時間を抽出することができます。
サンプルも公開していますので、よろしかったらコピーしてご利用ください。

1.使う計算式

(1)IMPORTXML : ページから該当の表示部分を切り出す。

出品ページはHTMLで記述されており、IMPORTXML関数を使って切り出したい部分を切り出します。どこを切り出すかを指定するためにXPathと構文(言語)を使います。

(2)CONCATENATE : 複数セルに分割された表示を一つのセルにまとめる。

IMPORTXMLだけだと切り出した該当部分が複数セルにバラバラに表示される場合があるので、その後の取り扱いに苦労します。
こんな時は、バラバラ表示されているセルの内容をひとつのセルにまとめます。

(3)REGEXEXTRACT : 一つのセルから、目的の記述(価格など)を切り出す。

一つのセルにまとめると、「1,000円(税込1,100円)」というような記述になります。ここから「1,000」「1,100」だけを切り取る時に正規表現という構文(言語)をつかいます。

よかったらサンプルを公開していますので、こちらをご覧ください。
より良い記述が見つかったら更新しています。
また、「もっと良い記述方法がある」という方は、ぜひコメントお願いいたします。
 https://docs.google.com/spreadsheets/d/1l5HhsuhdUCm2IlfVFntCskAiaM3YzL9RptdfGutH7mA/edit?usp=sharing


2020年6月3日水曜日

Googleフォームの入力チェック正規表現 事例集(JTU会員番号)

Googleフォームの入力チェック正規表現 事例集(JTU会員番号)

Googleフォームの入力チェックに、正規表現を使うと入力エラーを防止することができます。

Googleフォームに入力チェックを設定してみよう【後編】 | しすたま

正規表現の構文 - G Suite 管理者 ヘルプ - Google Support

他のサイトにも正規表現の入力方法が書いてありますが、すぐに使える事例を紹介した方がより、正規表現を理解できるし応用が効きますので、時々紹介していきたいと思います。

日本トライアスロン連合(JTU)会員番号のチェック用正規表現

(1)会員番号の体系

これまでに見たことのある会員番号から、以下の様な番号体系になっていると想定して、正規表現を作成しました。
  • ハイフン「-」を入れて12桁
  • ハイフンは必ず2つ入る。
  • 最初の3桁は加盟団体コード
    • 北海道が301〜沖縄が347
    • 学連はUで始まる。
  • ハイフンに囲まれた真ん中の部分は以下のようなパターンあり。
    • 最初に入会した年度(西暦下2桁)
    • または0の場合あり(西暦関係無く通番)
  • 最後の部分は通し番号(5桁または6桁)

(2)会員番号の例

  • 312-12-00010
    • 千葉県で2012年初登録、その年の10番目に申し込んだ会員
  • 311-0-123456
    • 埼玉県で、通算123456番目の会員、という意味(おそらく)
  • U12-20-00001
    • 学連(おそらく千葉県?)で2020年初登録で、その年の1番目に申し込んだ会員、という意味(おそらく)

(3)正規表現で表すとこうなる。

  • 加盟団体コード3桁 
    • 最初の1桁は、Uまたは数字 → [0-9U]{1}
    • 残りの2桁は数字 → [0-9]{2}
  • 間にハイフンが入る → -
  • 真ん中の部分と最後の部分は、以下の2つのパターンになる。
    • 数字2桁 + 「-」 + 数字5桁
    • 数字1桁 + 「-」 + 数字6桁
      → 合わせると、最初1桁は数字、次の2桁は「-」または数字、最後の5桁は数字
      → -[0-9]{1}[0-9¥-]{2}[0-9]{5}
文字頭の「^」、文字終わりの「$」を付けると、以下のような正規表現ができあがります。(完璧ではありませんが、ある程度のチェックは可能です。)

JTU会員番号チェック用正規表現 ^[0-9U]{1}[0-9]{2}-[0-9]{1}[0-9¥-]{2}[0-9]{5}$
エラー時メッセージ例 「ハイフン含め12桁を入力してください。」

また、チェックコード(数字2桁)の正規表現は以下の通りです。

JTU会員番号チェックコードチェック用正規表現 ^[0-9]{2}$
エラー時メッセージ例 「2桁の数字を入力してください。」

(4)その他

Googleの正規表現では、「*」(指定の文字が0文字以上)、「+」(指定の文字が1文字以上)が使えません。メール送信等の遅延を引き起こすからだそうです。

最初は「*」「+」が使えないと知ってガッカリきていましたが、よくよく考えると桁が決まっている文字列チェックするのであれば、「*」「+」は不要ですね。

みなさん、参考になりましたか?