クラウドワークスで募集すると少数ですが、コピペ記事を提出される方がいます。
そうなった場合、「非承認」をして「ブロック」する作業が必要になります。
この無駄な作業を、少しでも効率よくできないかと思いiMacros(無料ツール)を使って自動化しました。
ノーノちゃん
テイくん
このページの目次
1. 必ず最初にお読みください
非承認を「する」「しない」の判別を自動化できるツールではありません。
コピペチェックや記事確認は自分でする必要があります。
まだ導入されていない方はこちらからダウンロードしましょう。
【クラウドワークス】承認前の記事データを一括ダウンロードするツール
もしそうなった場合は、ご自分で修正されるかお問い合わせフォームから不具合報告をお願いします。
2. ツールを使うメリット
非承認+ブロックの数が少ない場合は手動でも大丈夫ですが、数が多くなると時間が掛かります。
「承認前の記事データを一括ダウンロードする方法」で取得した表に、NGを入れた後にマクロを動かします。
そうすると自動で以下の処理ができます。
- 空白の場合:承認
- NGがある場合:非承認+ブロック
件数の制限は一切ありませんので、もし100件以上あってもワンクリックだけで処理ができます。
特にブロックをする作業が重要
ブロックする作業の流れは以下の通りです。
このように作業ページ内ではブロックが出来ない仕様のため手間が掛かります。
ただ面倒だからといって、ブロックせずに依頼を続けると以下ようなデメリットがあります。
- 毎回コピペするや注意事項を守らない人の記事もチェックをする必要がある
※長年の経験上、ミスをしたりコピペする人はまた同じことする傾向があります - 必要のない記事にもお金を支払わないといけなくなる可能性がある
※作業件数に対し最大30%までしか非承認できない上限があります - なぜ非承認になったかなどの質問に対応しないといけない
少しお話が変わりますが、他のツールも組み合わせるとさらに時間短縮できます。
プログラムはこちらから取得できます。
クラウドワークスの「ありがとうボタン」を一括で自動クリックするツール
3. 動作環境について
ツールを使うためにソフトをダウンロード(追加)する必要があります。
- iMacros 旧バージョン(8.9.7)
最新版はJavaScriptが使用できないので旧バージョンが必要です。詳しく知りたい方は「iMacros:無料版と有料版の違いを解説」でご確認ください。 - Firefox 52.9.0ESR
- SmoothCSV or SmoothCSV2
記事の確認作業がやりやすいのでSmoothCSV2がおすすめ!
上記の導入方法はこちらで説明しています(設定時間は約5分)
iMacrosに必要なFirefox、SmoothCSVの導入方法と初期設定(保存版)【PART.1】
4. 更新履歴
修正や機能追加はこちらに記載しています。
- 特定の条件でブロック処理が出来ていない場合があったため修正
- 自動承認する工程を追加
5. マクロの設置方法
マクロの中身をコピーして貼り付け、ファイル名を「cw-reject.js」に変更するだけで動きます。
マクロ設置がはじめての方はこちらからどうぞ
【超初心者向け】2通りのマクロ設置方法を解説
6. マクロの中身
/*
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);
}
}
もしもiMacrosを1から勉強してみたい初心者の方はこちら
ブラウザ上の作業を全て自動化できる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:コマンド一覧と使い方(大量のサンプルマクロあり)【PART.10】
エディタを導入されていない方はこちらからどうぞ
iMacros×JavaScript:Visual Studio Codeの導入方法と使い方【PART.2】
7. マクロの使い方
※動画は約3分です。
※もしもブロックしたユーザーの数も確認したい場合はhttps://crowdworks.jp/u/blockingsまで移動してください。
コピペチェックツールについて
納品された記事のコピペチェックは必須です。
もしコピペ記事をそのままサイトにアップした場合以下のような危険があります。
- SEO的に悪影響を及ぼし順位が下がる
- 著作権侵害等で訴えられる可能性がある
このようなことがもし起きてしまうと外注化している意味がなくなります。
それとコピペチェックツールですが無料でもいけそうな気がしますが、文字数制限があったり精度が悪いものしかありません。
特に文字数制限があるため、有料ツールと比べるとチェックするのに膨大な時間が掛かります。
有料のコピペチェックツールは色々ありますが、以下の理由から筆者はコピペリンを使っています。
- 値段がリーズナブル(月々500円)
ほとんどのツールが月々1,000円以上します。今後は分かりませんが現在(2020年5月)は最安値です。 - 追加料金がなく定額(文字数制限なし)
使う頻度が多くなるとポイント、チケットなどをさらに購入する必要が出てくるツールが多いです。 - コピペ判定の精度が高い
精度は他の有料ツールと比べてほぼ違いはありません。 - バージョンアップを頻繁に行っている ※重要
Googleの検索エンジンに依存するため、ツールをアップデートしてくれないとすぐ使えなくなります。 - 記事同士のコピペチェックも可能
タスクでは必要性はそこまでありませんが、プロジェクト依頼で同じ人が大量に記事を書く場合に役立ちます。
コピペリンを詳しく知りたい方はこちら
参考
記事・文章コピペチェックツール「コピペリン」サクツールズ
8. よくある質問
これはJavaScriptで作られたプログラムをiMacros(.iim)で処理しようとした場合に表示されるエラーです。
解決方法:ファイル名を「cw-reject.js」に変更します。
解決方法:画像の通りPlayを押せばOKです。
切り離しを使いたい場合は、SmoothCSV2をダウンロードしましょう
設定方法はこちらからどうぞ
iMacros:CSVファイルをSmoothCSVに関連付け(特定のファイルのみも可)
9. まとめ
時間が掛かるコピペチェックや非承認とブロックを自動化する方法をご紹介しました。
記事内容の確認のみに時間を使えますので作業効率が良くなると思います。
- 非承認とブロックを自動化
- コピペチェックツールはコピペリンがおすすめ
- 「ありがとう自動クリックツール」を組み合わせると更に効率化
クラウドワークスの他の自動ツールはこちらからどうぞ
【クラウドワークス】3つの無料自動ツールで外注化の効率アップを支援!