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

【クラウドワークス】承認と非承認+ブロックを自動化するツール

【クラウドワーク】非承認とブロックを自動化する方法

クラウドワークスで募集すると少数ですが、コピペ記事を提出される方がいます。

そうなった場合、「非承認」をして「ブロック」する作業が必要になります。

この無駄な作業を、少しでも効率よくできないかと思いiMacros(無料ツール)を使って自動化しました。

ノーノちゃん

確かに「非承認」と「ブロック」は無駄な作業だね(^ω^)
はい!特に定期的に募集される方は、凄く時間短縮ができるのでおすすめです(*^^*)

テイくん

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

非承認を「する」「しない」の判別を自動化できるツールではありません。

コピペチェックや記事確認は自分でする必要があります。

注意①
このツールは、以前ご紹介した承認前データを使います。

まだ導入されていない方はこちらからダウンロードしましょう。
【クラウドワーク】承認前の記事データを一括ダウンロードする方法【クラウドワークス】承認前の記事データを一括ダウンロードするツール

注意②
クラウドワークス側の管理画面が変更された場合、マクロが動かなくなるの可能性があります。

もしそうなった場合は、ご自分で修正されるかお問い合わせフォームから不具合報告をお願いします。

2. ツールを使うメリット

非承認+ブロックの数が少ない場合は手動でも大丈夫ですが、数が多くなると時間が掛かります。

「承認前の記事データを一括ダウンロードする方法」で取得した表に、NGを入れた後にマクロを動かします。

一覧表にNGサンプル

そうすると自動で以下の処理ができます。

  • 空白の場合:承認
  • NGがある場合:非承認+ブロック

件数の制限は一切ありませんので、もし100件以上あってもワンクリックだけで処理ができます。

特にブロックをする作業が重要

ブロックする作業の流れは以下の通りです。

STEP.1
クラウドワーカーページに移動
クラウドワークスのブロックする方法
STEP.2
「〇〇さんをブロックする」をクリック
クラウドワークスのブロックする方法
STEP.3
「ブロックする」をクリック
クラウドワークスのブロックする方法

このように作業ページ内ではブロックが出来ない仕様のため手間が掛かります。

ただ面倒だからといって、ブロックせずに依頼を続けると以下ようなデメリットがあります。

3つの大きなデメリット
  1. 毎回コピペするや注意事項を守らない人の記事もチェックをする必要がある
    ※長年の経験上、ミスをしたりコピペする人はまた同じことする傾向があります
  2. 必要のない記事にもお金を支払わないといけなくなる可能性がある
    ※作業件数に対し最大30%までしか非承認できない上限があります
  3. なぜ非承認になったかなどの質問に対応しないといけない

少しお話が変わりますが、他のツールも組み合わせるとさらに時間短縮できます。

プログラムはこちらから取得できます。
【無料】クラウドワークの「ありがとうボタン」を自動クリックするツールクラウドワークスの「ありがとうボタン」を一括で自動クリックするツール

3. 動作環境について

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

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

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

4. 更新履歴

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

  • 特定の条件でブロック処理が出来ていない場合があったため修正
  • 自動承認する工程を追加

5. マクロの設置方法

マクロの中身をコピーして貼り付け、ファイル名を「cw-reject.js」に変更するだけで動きます。

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

6. マクロの中身

cw-reject.js
/*
Macro Name: cw-reject.js
Macro URI: https://teilab.net/imacros-crowdworks-reject/
Author: teilab(テイくん)
Version: 1.1
*/

// -------------------------------------------------
// 繰り返し処理開始
// -------------------------------------------------
for (var loop = 1; ; loop++) {
  // -------------------------------------------------
  // データに「ID」と「NG」があるかチェック【macroCheck】
  // -------------------------------------------------
  var macroCheck = "CODE:";
  macroCheck += "SET !REPLAYSPEED FAST" + "\n";
  macroCheck += "SET !ERRORIGNORE YES" + "\n";
  macroCheck += "SET !TIMEOUT_STEP 0" + "\n";
  macroCheck += "SET !DATASOURCE {{!FOLDER_DATASOURCE}}\\クラウドワークス\\crowdworks.csv" + "\n";
  
  // 無限ループを回避するためにloopの値が2以降から必要(1行目のID)
  macroCheck += "SET !DATASOURCE_LINE 1" + "\n" // 1行目
  macroCheck += "ADD !EXTRACT {{!COL1}}" + "\n"; 

  // 処理するデータがあるか判定(2行目以降のID)
  macroCheck += "SET !DATASOURCE_LINE "+loop+ "\n"; // 2行目以降
  macroCheck += "ADD !EXTRACT {{!COL1}}" + "\n"; 

  // 非承認するか判定(セル内にNGがあるか)
  macroCheck += "ADD !EXTRACT {{!COL6}}" + "\n";
  iimPlay(macroCheck);

  var checkFirstId = iimGetExtract(1); // 1行目のID
  var checkId = iimGetExtract(2);      // 2行目以降のID
  var checkNg = iimGetExtract(3);      // NG


  // ここが少し特殊!!読み込むデータがなくなった場合1番上に戻る仕様になっている。
  // そのため無限ループを回避するためにこの処理が必要なる。
  // それと1回目で以下の処理をするとマクロが止まってしまうので2回目からにしている。
  if (loop !== 1 && checkId === checkFirstId) { //1行目のIDと現在のIDが同じ(1回目は除外)
    for (var blockLoop = 1; ; blockLoop++) {
      // -------------------------------------------------
      // macroCheckと同じ処理【macroCheck2】
      // -------------------------------------------------
      var macroCheck2 = "CODE:";
      macroCheck2 += "SET !REPLAYSPEED FAST" + "\n";
      macroCheck2 += "SET !ERRORIGNORE YES" + "\n";
      macroCheck2 += "SET !TIMEOUT_STEP 0" + "\n";
      macroCheck2 += "SET !DATASOURCE {{!FOLDER_DATASOURCE}}\\クラウドワークス\\crowdworks.csv" + "\n";
      macroCheck2 += "SET !DATASOURCE_LINE 1" + "\n";
      macroCheck2 += "ADD !EXTRACT {{!COL1}}" + "\n";
      macroCheck2 += "SET !DATASOURCE_LINE "+blockLoop+ "\n";
      macroCheck2 += "ADD !EXTRACT {{!COL1}}" + "\n";
      macroCheck2 += "ADD !EXTRACT {{!COL6}}" + "\n";
      iimPlay(macroCheck2);

      var check2FirstId = iimGetExtract(1);
      var check2Id = iimGetExtract(2);
      var check2Ng = iimGetExtract(3);


      if (blockLoop !== 1 && check2Id === check2FirstId) {
        // -------------------------------------------------
        // 全て処理が終わった場合【macroEnd】
        // -------------------------------------------------
        var macroEnd = "CODE:";
        macroEnd += "PROMPT 非承認とブロックの処理が全て完了しました!<SP>" + "\n";

        // マイページに移動
        macroEnd += "URL GOTO=https://crowdworks.jp/dashboard" + "\n";
        iimPlay(macroEnd);
        iimClose();


      } else if (check2Ng === "NG") {
        // -------------------------------------------------
        // ブロック【macroBlock】
        // -------------------------------------------------
        var macroBlock = "CODE:";
        macroBlock += "SET !REPLAYSPEED FAST" + "\n";
        macroBlock += "SET !ERRORIGNORE YES" + "\n";
        macroBlock += "SET !DATASOURCE {{!FOLDER_DATASOURCE}}\\クラウドワークス\\crowdworks.csv" + "\n";
        macroBlock += "SET !DATASOURCE_LINE "+blockLoop+ "\n";
        macroBlock += "SET id EVAL(\"'{{!COL4}}'.replace(/.*\\/(.*?)/g,'$1');\")" + "\n"; // ID以外を削除

        // ブロックページに移動
        macroBlock += "URL GOTO=https://crowdworks.jp/u/blockings/new?user_id={{id}}" + "\n";
        macroBlock += "TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:new_blocking ATTR=NAME:commit" + "\n"; // ブロックする
        iimPlay(macroBlock);
      }
    }


  } else if (checkNg === "NG") {
    // -------------------------------------------------
    // 非承認【macroReject】
    // -------------------------------------------------
    var macroReject = "CODE:";
    macroReject += "SET !REPLAYSPEED FAST" + "\n";
    macroReject += "SET !ERRORIGNORE YES" + "\n";
    macroReject += "SET !DATASOURCE {{!FOLDER_DATASOURCE}}\\クラウドワークス\\crowdworks.csv" + "\n";
    macroReject += "SET !DATASOURCE_LINE "+loop+ "\n";

    // 作業ページに移動
    macroReject += "URL GOTO=https://crowdworks.jp/r/task_works/{{!COL1}}" + "\n";
    macroReject += "TAG POS=1 TYPE=A ATTR=TXT:承認しない(非承認)" + "\n"; // 非承認を押す
    iimPlay(macroReject);


  // 編集時に空白行を入れた場合の対策!
  // これがないと空白行も処理をしてしまうので念の為入れている
  } else if (checkId !== "") {
    // -------------------------------------------------
    // 承認【macroAccept】
    // -------------------------------------------------
    var macroAccept = "CODE:";
    macroAccept += "SET !REPLAYSPEED FAST" + "\n";
    macroAccept += "SET !ERRORIGNORE YES" + "\n";
    macroAccept += "SET !DATASOURCE {{!FOLDER_DATASOURCE}}\\クラウドワークス\\crowdworks.csv" + "\n";
    macroAccept += "SET !DATASOURCE_LINE "+loop+ "\n";

    // 作業ページに移動
    macroAccept += "URL GOTO=https://crowdworks.jp/r/task_works/{{!COL1}}" + "\n";
    macroAccept += "TAG POS=1 TYPE=A ATTR=TXT:承認して報酬を支払う" + "\n"; // 承認を押す
    iimPlay(macroAccept);
  }
}
注意
「基礎講座」の記事一覧内容とJavaScriptがある程度理解できている中級者向けの内容です。ツールの使用のみが目的の方はスキップ推奨です!

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

  // -------------------------------------------------
  // データに「ID」と「NG」があるかチェック【macroCheck】
  // -------------------------------------------------
  var macroCheck = "CODE:";
  macroCheck += "SET !REPLAYSPEED FAST" + "\n";
  macroCheck += "SET !ERRORIGNORE YES" + "\n";
  macroCheck += "SET !TIMEOUT_STEP 0" + "\n";
  macroCheck += "SET !DATASOURCE {{!FOLDER_DATASOURCE}}\\クラウドワークス\\crowdworks.csv" + "\n";
  
  // 無限ループを回避するためにloopの値が2以降から必要(1行目のID)
  macroCheck += "SET !DATASOURCE_LINE 1" + "\n" // 1行目
  macroCheck += "ADD !EXTRACT {{!COL1}}" + "\n"; 

  // 処理するデータがあるか判定(2行目以降のID)
  macroCheck += "SET !DATASOURCE_LINE "+loop+ "\n"; // 2行目以降
  macroCheck += "ADD !EXTRACT {{!COL1}}" + "\n"; 

  // 非承認するか判定(セル内にNGがあるか)
  macroCheck += "ADD !EXTRACT {{!COL6}}" + "\n";
  iimPlay(macroCheck);

  var checkFirstId = iimGetExtract(1); // 1行目のID
  var checkId = iimGetExtract(2);      // 2行目以降のID
  var checkNg = iimGetExtract(3);      // NG


  // ここが少し特殊!!読み込むデータがなくなった場合1番上に戻る仕様になっている。
  // そのため無限ループを回避するためにこの処理が必要なる。
  // それと1回目で以下の処理をするとマクロが止まってしまうので2回目からにしている。
  if (loop !== 1 && checkId === checkFirstId) { //1行目のIDと現在のIDが同じ(1回目は除外)

コメントアウトにも入れていますが、CSVのデータを1番下まで使った場合上に戻る仕様になっています。

例えばデータが30行まであった場合

  • !DATASOURCE_LINE 30 = !DATASOURCE_LINE 30
  • !DATASOURCE_LINE 31 = !DATASOURCE_LINE 1
  • !DATASOURCE_LINE 32 = !DATASOURCE_LINE 1
  • !DATASOURCE_LINE 33 = !DATASOURCE_LINE 1

凄くわかりにくですが上記のようになります。

もしif文なしで処理をすると無限ループが発生しますのでcheckId === checkFirstId(1列目ID = 1列目ID)になった時点で分岐するようにしています。

ちなみcheckId === "" や checkId === nullでは、データが未定義や空ではないのではマッチしません。

      } else if (check2Ng === "NG") {
        // -------------------------------------------------
        // ブロック【macroBlock】
        // -------------------------------------------------
        var macroBlock = "CODE:";
        // ~中略~
        iimPlay(macroBlock);
     }
    }


  } else if (checkNg === "NG") {
    // -------------------------------------------------
    // 非承認【macroReject】
    // -------------------------------------------------
    var macroReject = "CODE:";
    // ~中略~
    iimPlay(macroReject);	


  } else if (checkId !== "") {
    // -------------------------------------------------
    // 承認【macroAccept】
    // -------------------------------------------------
    var macroAccept = "CODE:";
    // ~中略~
    iimPlay(macroAccept);
  }
}

非承認【macroReject】と承認【macroAccept】してから最後にブロック【macroBlock】しています。

理由は承認作業が残っていると、クラウドワークスの仕様上ブロック処理が出来ないのでこの流れになります。

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

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

7. マクロの使い方

※動画は約3分です。

STEP.1
承認前の記事データを開く
STEP.2
コピペチェック
コピペチェックツールでコピペしていないか確認します。
もしコピペしていた場合は承認前の記事データの6列目にNGを入れます。

マクロの使い方説明

補足
動画のコピペチェックツールはコピペリンを使用しています。
STEP.3
記事を内容を確認
依頼した内容と違う記事に、前項目と同じくNGを入れて上書き保存します。

マクロの使い方説明

注意
上書き保存を忘れてツールが動かないと思う方が結構います。必ず上書き保存をしましょう!
STEP.4
マクロを起動
マクロの使い方説明
STEP.5
確認
マイページに自動で移動しますので「承認済み」や「非承認」の数を確認します。
※もしもブロックしたユーザーの数も確認したい場合はhttps://crowdworks.jp/u/blockingsまで移動してください。

コピペチェックツールについて

納品された記事のコピペチェックは必須です。

もしコピペ記事をそのままサイトにアップした場合以下のような危険があります。

  • SEO的に悪影響を及ぼし順位が下がる
  • 著作権侵害等で訴えられる可能性がある

このようなことがもし起きてしまうと外注化している意味がなくなります。

それとコピペチェックツールですが無料でもいけそうな気がしますが、文字数制限があったり精度が悪いものしかありません。

特に文字数制限があるため、有料ツールと比べるとチェックするのに膨大な時間が掛かります。

有料のコピペチェックツールは色々ありますが、以下の理由から筆者はコピペリンを使っています。

5つの理由
  1. 値段がリーズナブル(月々500円)
    ほとんどのツールが月々1,000円以上します。今後は分かりませんが現在(2020年5月)は最安値です。
  2. 追加料金がなく定額(文字数制限なし)
    使う頻度が多くなるとポイント、チケットなどをさらに購入する必要が出てくるツールが多いです。
  3. コピペ判定の精度が高い
    精度は他の有料ツールと比べてほぼ違いはありません。
  4. バージョンアップを頻繁に行っている ※重要
    Googleの検索エンジンに依存するため、ツールをアップデートしてくれないとすぐ使えなくなります。
  5. 記事同士のコピペチェックも可能
    タスクでは必要性はそこまでありませんが、プロジェクト依頼で同じ人が大量に記事を書く場合に役立ちます。

コピペリンを詳しく知りたい方はこちら
参考 記事・文章コピペチェックツール「コピペリン」サクツールズ

8. よくある質問

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

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

imacrosError

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

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

以下の方法で変更できます。

SmoothCSV2列幅の変更方法

Smoothcsv2

切り離しを使いたい場合は、SmoothCSV2をダウンロードしましょう

ファイルの関連付けをすれば解決します。

設定方法はこちらからどうぞ
iMacros:全てのCSVファイルをSmoothCSVで開く設定方法iMacros:CSVファイルをSmoothCSVに関連付け(特定のファイルのみも可)

9. まとめ

時間が掛かるコピペチェックや非承認とブロックを自動化する方法をご紹介しました。

記事内容の確認のみに時間を使えますので作業効率が良くなると思います。

まとめ

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