🐡

テキストエリアの文字列を置換して、欲しい形に処理する

2020/12/12に公開

背景

本業で広告運用をしながら、勉強でプログラミングをしています。
indeedで運用する際に一部の手作業が面倒だと感じていた為、
アウトプットも兼ねて自動化してみました。

問題点

indeedで広告運用すると、どの求人をアカウントに紐付けるかの設定が必要になります。
何も設定しなければ、公開してる求人全てが対象となります。
ただ、ほとんどの企業から要望があります。
その時に、依頼される求人数が多ければ、手作業が増えます。
(除外の設定のみで済むときもあります。)

デフォルトで用意されてる機能

直書きもできる

依頼求人が20件なら、まだ手作業でも頑張れるけど、
それ以上になるとポチポチ入れるのが面倒でしかないです。

必要な形を一瞬で作成して、直書きの欄にコピペするのを作成しました。

ソースコード

https://github.com/Kwateru/indeed_job_ID_replace
https://kwateru.github.io/indeed_job_ID_replace/

HTML

index.html
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="style.css" type="text/css">
    <title>indeed 求人紐付け</title>
</head>
<body>
        <textarea name="kyujin" class="input" cols="30" rows="10" placeholder="12345&#13;54321&#13;98765"></textarea>
        <button type="submit" value="送信" class="btn">送信&コピー</button>
        <textarea name="seikei" class="seikei" cols="30" rows="10"></textarea>
</body>

    <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
    <script src="main.js" type="text/javascript"></script>
</html>

簡単に入力する①テキストエリア ②ボタン ③出力先のテキストエリアを作成しました。
placeholderで例を提示してみたけど、デバイス?によっては改行してくれないことに気付きました。

js

main.js
$(function(){

    var input = $('.input');
    var button = $('.btn');
    var result = $('.seikei');

    button.on('click', function(){

        var inputVal = input.val();

        // textareaの内容を改行で分割して配列に格納
        var inputValArray = inputVal.split('\n');


        // 各行に対して処理する
        var display = "";
        for(i = 0; i < inputValArray.length; i++){
            display += '"' + inputValArray[i] + '"' + "\n";
        }

        // 改行を「 OR 」に置換する
        var str = display.replace(/\r?\n/g, ' OR ')
        result.val('refnum:(' + str + ')');

        // copyする
        result.select();
    })

});

末尾に余分なORが出る

1234
4321
↑テキストエリアに入力して、処理すると、
refnum:("43141" OR "41241" OR "41412" OR )

for文の理解

①display += '"' + inputValArray[i] + '"' + "\n";
②display = '"' + inputValArray[i] + '"' + "\n";
2だと1行目しか処理されないこと。

他にも色々あるが、上手く言語化出来ないので、
アウトプットを重ねていくしかない。

Discussion