未経験のITエンジニア転職【テックキャンプ】

クラウドワークスの「ありがとうボタン」を一括で自動クリックするツール

【無料】クラウドワークの「ありがとうボタン」を自動クリックするツール

この自動クリックツールは、クラウドワークスで記事やアンケートなどを募集した時のありがとうボタンを自動(一括)で押すことができます。

筆者が以前、100件単位の依頼を複数募集した時に手動で処理すると、さすがに時間がもったいないと思いこのツールを作りました。

使ったソフトは、ブラウザ作業を全て自動化でできるiMacros(無料)です。

ノーノちゃん

すぐに使えるの?それと難しくない??
初期設定さえ終われば、後はボタンを押すだけで簡単です(^o^)

テイくん

1. 必ず最初にお読みください

クラウドワークスの「ありがとうボタン」を自動でクリックするツールです。

何百件あってもワンクリックですべてOKです。

注意①
自動でできるからといって数を増やそうと、過去の案件や同じ方に意味もなく「ありがとうボタン」を押すと迷惑になるのでやめましょう。
※ちなみに1日に押す回数上限はありませんが、1人の方に対して1日1回までです。
注意②
クラウドワーク側がアップデート(ソースコード変更)したことによってツールが動かなくなる可能性があります。
そうなった場合は、ご自分で修正されるかお問い合わせフォームから不具合報告をお願いします。

2. ありがとうボタンを押すメリット

そもそもありがとうボタンを押すメリットは?と思う方が多いのではないでしょうか。

クラウドワーカー(仕事を受ける側)の方は、ありがとうボタンについて以下のように考えているようです。


続いて筆者が会社で所有している2つのアカウントを見て頂ければと思います。

クラウドワークスありがとうボタン
※2つのアカウントの画像を貼り付けていますが、法人アカウントの場合を除き複数アカウントを作成する行為は禁止されています。

第19条 禁止事項
(5) 一人の利用者が複数のメールアドレス等を登録して重複して会員登録を行う行為。
参照元:クラウドワークス利用規約(第19条 禁止事項)

検証のために上記の2つのアカウントで同じような案件(プロジェクト)を募集したことがあります。

案件の内容によって変わると思いますが、ありがとうの数と評価実績が多いアカウントの方が約2倍の募集が集まりました。
※あくまでも一つの例です。

もちろんありがとうの数より高い評価数が重要ですが、ありがとうの数がほとんどないより多いほうが応募が埋まりやすい可能性があります。

ノーノちゃん

話変わるけど…ちなみテイくんって何件ぐらい募集したことあるの?
全てのアカウントで1,000件ぐらいだと思います。クラウドワークスを使って6年間なので、そこまで多くないかもです(⌒▽⌒)

テイくん

3. 動作環境について

ツールを使うためにソフトをダウンロード(追加)する必要があります。

必要な2つのソフト(無料)
  1. iMacros 旧バージョン(8.9.7)
    最新版はJavaScriptが使用できないので旧バージョンが必要です。詳しく知りたい方は「iMacros:無料版と有料版の違いを解説」でご確認ください。
  2. Firefox 52.9.0ESR

上記の導入方法はこちらで説明しています(設定時間は約5分)
iMacrosの初期設定と導入方法iMacrosに必要なFirefox、SmoothCSVの導入方法と初期設定(保存版)【PART.1】

4. 更新履歴

修正や機能追加はこちらに記載しています。

  • Version情報をプログラムTOPに記載
  • プログラムの簡略化(iimSet廃止)
  • ユーザーが任意の数でありがとうボタンを押せるように変更(JavaScript追加)

5. マクロの設置方法

マクロの中身を貼り付けた後、ファイル名「cw-thanks.js」に変更するだけで動きます。
※マクロの中身は次の項目にあります。

マクロ設置がはじめての方はこちらからどうぞ
【超初心者向け】2通りのマクロ設置方法を解説【超初心者向け】2通りのマクロ設置方法を解説

6. マクロの中身

cw-thanks.js
/*
Macro Name: cw-thanks.js
Macro URL: https://teilab.net/imacros-thanks-button/
Author: teilab(テイくん)
Version: 1.2
*/


// -------------------------------------------------
// 任意の数のありがとうボタンを押せるようにする処理
// -------------------------------------------------
var num = prompt("ありがとうボタンを押したい数を入力してください!\n\n");
  if (num == null){ // 何も入ってない空の状態(キャンセルを押した場合)
    iimClose();

  } else if (num == ""){ // 値がない場合
    alert("数値は必須事項です!");
    iimClose();

  } else if (isNaN(num) || !(num >= 1 && num <= 9999)){ // 数字(1~9999)以外の場合
    alert("1~9999までの数値(半角)を入力してください!");
    iimClose();
  }


// -------------------------------------------------
// 繰り返し処理開始
// -------------------------------------------------
for (var outLoop = 0; ; outLoop++){
  for (var inLoop = 1; ; inLoop++){
    // -------------------------------------------------
    // ありがとうボタンがあるかチェック【macroCheck】
    // -------------------------------------------------
    var macroCheck = "CODE:";
    macroCheck += "SET !REPLAYSPEED FAST" + "\n";
    macroCheck += "SET !ERRORIGNORE YES" + "\n";
    macroCheck += "SET !TIMEOUT_STEP 0" + "\n";

    //ありがとうボタンを押すか判定 ※重要
    macroCheck += "TAG POS="+inLoop+" TYPE=DIV ATTR=CLASS:username EXTRACT=TXT" + "\n";
    iimPlay(macroCheck);

    var check = iimGetExtract(1); //iimデータはjsで使えないため変数checkに渡す


    if (inLoop === 21){
      // -------------------------------------------------
      // 次のページに移動【macroNext】
      // -------------------------------------------------
      var macroNext = "CODE:";
      macroNext += "SET !REPLAYSPEED FAST" + "\n";
      macroNext += "SET !ERRORIGNORE YES" + "\n";
      macroNext += "SET !TIMEOUT_STEP 1" + "\n";
      macroNext += "TAG POS=1 TYPE=A ATTR=REL:next*" + "\n";
      macroNext += "WAIT SECONDS=1"+ "\n";
      iimPlay(macroNext);

      break; //inLoopを抜ける


    } else if (outLoop * 20 + inLoop > num || check === "#EANF#"){
      // -------------------------------------------------
      // 入力した数のありがとうボタンを全て押した or 押すボタンがない場合【macroEnd】
      // -------------------------------------------------
      var macroEnd = "CODE:";
      macroEnd += "PROMPT 全てのありがとうボタンを押しました。<SP>" + "\n";
      iimPlay(macroEnd);
      iimClose();


    } else {
      // -------------------------------------------------
      // ありがとうボタン押す【macrothanks】
      // -------------------------------------------------
      var macrothanks = "CODE:";
      macrothanks += "SET !REPLAYSPEED FAST" + "\n";
      macrothanks += "SET !ERRORIGNORE YES" + "\n";
      macrothanks += "SET !TIMEOUT_STEP 0" + "\n"; //遅延対策
      macrothanks += "EVENT TYPE=CLICK XPATH=//tr["+inLoop+"]/td[2]/div[2]/div[3]/div/div[1] BUTTON=0" + "\n"; //通常用
      macrothanks += "EVENT TYPE=CLICK XPATH=//tr["+inLoop+"]/td[2]/div[2]/div[4]/div/div[1] BUTTON=0" + "\n"; //PROCW用
      iimPlay(macrothanks);
    }
  }
}
注意
「基礎講座」の記事一覧内容とJavaScriptがある程度理解できている中級者向けの内容です。ツールの使用のみが目的の方はスキップ推奨です!

iMacrosを1から勉強してみたい方や初心者の方はこちら
ブラウザ上の作業を全て自動化できるiMacrosブラウザ上の作業を全て自動化できるiMacrosとは?【PART.0】

// -------------------------------------------------
// 繰り返し処理開始
// -------------------------------------------------
for (var outLoop = 0; ; outLoop++){
  for (var inLoop = 1; ; inLoop++){

多重ループ(for文の中にfor文)にさせている理由は、1~21回までカウントさせた後【macroNext】内のbreakで再度1からカウントさせるためです。

ループだけで作るとbreakした時点でマクロが終了してしまいます。

    // -------------------------------------------------
    // ありがとうボタンがあるかチェック【macroCheck】
    // -------------------------------------------------
    var macroCheck = "CODE:";
    macroCheck += "SET !REPLAYSPEED FAST" + "\n";
    macroCheck += "SET !ERRORIGNORE YES" + "\n";
    macroCheck += "SET !TIMEOUT_STEP 0" + "\n";

    //ありがとうボタンを押すか判定 ※重要
    macroCheck += "TAG POS="+inLoop+" TYPE=DIV ATTR=CLASS:username EXTRACT=TXT" + "\n";
    iimPlay(macroCheck);

    var check = iimGetExtract(1); //iimデータはjsで使えないため変数checkに渡す

TAG POS={{inLoop}} TYPE=DIV ATTR=CLASS:username EXTRACT=TXTで吸い上げたデータをvar check = iimGetExtract(1)でjsに受け渡します。そしてもしも値が#EANF#ならマクロを終了させます。
補足:#EANF#は抜き出すデータがないという意味です。

    } else if (outLoop * 20 + inLoop > num || check === "#EANF#"){
      // -------------------------------------------------
      // 入力した数のありがとうボタンを全て押した or 押すボタンがない場合【macroEnd】
      // -------------------------------------------------
      var macroEnd = "CODE:";
      macroEnd += "PROMPT 全てのありがとうボタンを押しました。<SP>" + "\n";
      iimPlay(macroEnd);
      iimClose();

if文の分岐が少し複雑なので例を出して解説します。

outLoop * 20 + inLoopの合計がありがとうボタンを押す数と一致します。

それとif (inLoop === 21)breakしますので【macrothanks】で使うinLoopは20までしか使用しません。

1ページ20個のありがとうボタンしかありませんのでこのような作りになります。

各数値は以下のようになります。

処理回数 ページ数 outLoop × 20 + inLoop 合計
1 1 0 20 1 1
2 1 0 20 2 2
3 1 0 20 3 3
4 1 0 20 4 4
5 1 0 20 5 5
6 1 0 20 6 6
7 1 0 20 7 7
8 1 0 20 8 8
9 1 0 20 9 9
10 1 0 20 10 10
11 1 0 20 11 11
12 1 0 20 12 12
13 1 0 20 13 13
14 1 0 20 14 14
15 1 0 20 15 15
16 1 0 20 16 16
17 1 0 20 17 17
18 1 0 20 18 18
19 1 0 20 19 19
20 1 0 20 20 20
21 breakinLoopを抜ける
1 2 1 20 1 21
2 2 1 20 2 22
3 2 1 20 3 23
4 2 1 20 4 24
5 2 1 20 5 25
6 2 1 20 6 26
7 2 1 20 7 27
8 2 1 20 8 28
9 2 1 20 9 29
10 2 1 20 10 30
11 2 1 20 11 31
12 2 1 20 12 32
13 2 1 20 13 33
14 2 1 20 14 34
15 2 1 20 15 35
16 2 1 20 16 36
17 2 1 20 17 37
18 2 1 20 18 38
19 2 1 20 19 39
20 2 1 20 20 40
21 breakinLoopを抜ける

ユーザーが入力した値(num)より合計(ありがとうボタンの押した数)が大きくなった場合にマクロが止まります。

補足
この方法以外に別の場所で計算した値を使って条件分岐することも可能です。
    } else {
      // -------------------------------------------------
      // ありがとうボタン押す【macrothanks】
      // -------------------------------------------------
      var macrothanks = "CODE:";
      macrothanks += "SET !REPLAYSPEED FAST" + "\n";
      macrothanks += "SET !ERRORIGNORE YES" + "\n";
      macrothanks += "SET !TIMEOUT_STEP 0" + "\n"; //遅延対策
      macrothanks += "EVENT TYPE=CLICK XPATH=//tr["+inLoop+"]/td[2]/div[2]/div[3]/div/div[1] BUTTON=0" + "\n"; //通常用
      macrothanks += "EVENT TYPE=CLICK XPATH=//tr["+inLoop+"]/td[2]/div[2]/div[4]/div/div[1] BUTTON=0" + "\n"; //PROCW用
      iimPlay(macrothanks);

通常用とPROCW用(プロクラウドワーカー)のありがとうボタン自体は同じですが、XPATH(位置)が違うため2つ入れています。

もし通常用だけですとPROCWだけありがとうボタンを押さない仕様になってしまいます。

分からないコマンドはこちらで確認しましょう
iMacrosコマンド一覧と使い方iMacros:コマンド一覧と使い方(大量のサンプルマクロあり)【PART.10】
補足
ページ内では全体のプログラムが見にくいので、Visual Studio Codeエディタなどにコピペして確認すると効率がいいです。

エディタを導入されていない方はこちらからどうぞ
【iMacros×JavaScript】Visual Studio Codeの導入方法と使い方iMacros×JavaScript:Visual Studio Codeの導入方法と使い方【PART.2】

7. マクロの使い方

※動画は約30秒です。

STEP.1
案件を選ぶ
ありがとうを押したい案件を選びます。
STEP.2
承認済みをクリック
クラウドワークス承認済みソート

承認済みでない案件も「ありがとうボタン」を押すことができます。
ただ、もし後で非承認した場合、クラウドワーカーさん(仕事をしてくれる方)があまり気分が良くないと思うので承認済みだけ押すようにします。
※あくまでに筆者の運用方法です。

STEP.3
マクロを起動
ありがとうボタンを押したい数を入力

数を入力してOKを押せば、後は自動でクリックしていきます。

補足
間違えて数を多く入れた場合でも、クリックする「ありがとうボタン」がなくなれば自動的に止まります。

8. よくある質問

マクロのラインを解析できません。

これはJavaScriptで作られたプログラムをiMacros(.iim)で処理しようとした場合に表示されるエラーです。
解決方法:ファイル名を「cw_thanks.js」に変更します。

imacrosError

LOOPボタンを使えるのはiMacros(.iim)ファイルだけです。JavaScript(.js)ファイルを使えばLOOPが使えます。

解決方法:画像の通りPlayを押せばOKです。

JavaScriptを使わずiMacrosだけの自動化は簡単です。なぜかと言いますとプログラムを自動でiMacrosが書いてくれるからです。

まずはこちらの記事を参考にして頂ければと思います。
iMacrosの使い方:初心者向けに解説iMacrosの使い方:初心者向けに解説!(図解、動画あり)【PART.2】

9. まとめ

手動では時間が掛かり過ぎて、できなかったことを自動化すると仕事の幅が広がります。

今回のマクロはJavaScriptで書いているため少し難しかった方もいると思います。

実は、「次のページに進む」の処理だけを手動ですればiMacrosだけでも自動化が可能です。

ですので無理にJavaScriptを覚えなくても大丈夫です。

まとめ
  • 自動でありがとうボタンを押せる
  • ありがとうの数が多いほど募集が集まりやすい
  • 承認済みの案件のみにありがとうを押す

クラウドワークスの他の自動ツールはこちらからどうぞ
【クラウドワークス】3つの無料自動ツールで外注化の効率アップを支援!【クラウドワークス】3つの無料自動ツールで外注化の効率アップを支援!