公開日:9/04/2020
    シェア:

    コピペチェックで大活躍!テキストを指定の文字数で区切る方法(Googleスプレットシート)

     

    こんにちは!モノクロパレットのキブナです。

    今日は「コピペチェック」ではなく、コピペチェックに執筆した記事を検査させるときに役立つ情報を紹介します。

    これでも本業はWEBライターなので、自分が書いた記事は、納品前にコピペチェックをしています。もちろん、最初からコピペをしているわけではありませんが、知らないうちにコピペになっていた!ということが無いとも限りません。

    ライターの中には「コピペが見つかってしまったら修正すればいい」という”強いハート”を持っている方もいるのですが、こちらも信用第一で働いているので、そんなところで取引きがなくなったら大事故です。

    そもそそもコピペはダメです。数年前にコピペや画像の盗用で閉鎖に追い込まれたサイトもあるくらいです。

    話しがそれましたが、自分でも気づかないようなコピペ記事を産まないためにも、納品前にコピペチェックは重要ですが、同時に少し面倒だなと感じるところがあります。

    その原因のひとつが、コピペチェックに通せる「文字数」です。無料のコピペチェックサイトでは一度に入れられる文字数に制限があることがほとんどです。ちなみに、僕がお世話になっている「CopyContentDetector」も無料プランは4000字という制約があります。

    3000字や6000字くらいの記事を書いている分には、テキストをそのまま、もしくは2つに分けるだけなので、それほど大変ではありませんが、10000文字とか20000文字になってくると少し大変。自動でテキストを区切ってくれる「なにか」があればいいと思いませんか?

    そこで、皆さん大好きな「Googleスプレットシート」を使ってテキストを指定の文字数で分けられるようにしていきましょう。

    Googleスプレットシートでテキストを分けるシートをつくる

    最初に基本設計を考えておきましょう。やりたいことは「入力したテキストを指定の文字数で分ける」というものです。整理すると、

    1. 入力…テキスト
    2. 処理…テキストを分ける
    3. 出力…分けられたテキスト

    となります。では、まずは入力部分を実装していきましよう。

    Googleスプレットシートに入力欄をつくる

    まず、A列全体をテキストの入力スペースにしたいので、ここには何も入力をしません。あとで分かるように枠だけ入れておくのもおすすめ。

    次に、B1に「切り取り文字数」と入力し、B1-C1に枠を入れておきます。C2には何文字ずつ区切るかを入力できるようにしておきます。

    B2には「結合文字列」と入力し「C2」には「=join("",A:A)」を入力します。Joinとは、指定の範囲のテキストを繋げる関数。これで、A列に入力されたものが1行のテキストとして出力されます。

    わかりやすいように関数が見えるようにしています

    テキストを指定数で切り抜く関数を入れる

    続いて、処理に部分を書いていきます。今回が25000文字まで対応できるよに作っていきましょう。また、一緒に出力の部分も作っていきます。

    指定の文字数ごとに抽出するために、長い文字列の中からそれぞれの範囲を指定する必要があります。110文字のテキストを50文字ずつに分けるとすると、1~50・51~100、101~最後の110文字という感じです。

    全体の文字数が決まっていれば良いのですが、これは変わるものなので、文字数が多くても少なくても対応できるようじしなければいけません。その点を頭の片隅に置きながら、次の16個の関数を入力していきます。

    1. B3…文字総数
    2. C3…=len(C2)
    3. B4…1
    4. C4…=if(C3>0,if(C3-C1>0,C1*1,C3),"")
    5. B5…=if(C4>=C3,"",C1+1)
    6. C5…=if(B5="","",if(C1*2>=C3,C3,C1*2))
    7. B6…=if(C5>C3,"",C1*2+1)
    8. C6…=if(B6="","",if(C1*3>=C3,C3,C1*3))
    9. B7…=if(C6>C3,"",C1*3+1)
    10. C7…=if(B7="","",if(C1*4>=C3,C3,C1*4))
    11. B8…=if(C7>C3,"",C1*4+1)
    12. C8…=if(B8="","",if(C1*5>=C3,C3,C1*5))
    13. B9…=if(C8>C3,"",C1*5+1)
    14. C9…=if(B9="","",if(C1*6>=C3,C3,C1*6))
    15. B10…=if(C9>C3,"",C1*6+1)
    16. C10…=if(B10="","",if(C1*7>=C3,C3,C1*7))

    最初のセルの場所を間違えると正常に計算がされないので注意しましょう。この関数で、テキストから切り出す文字数の位置が導き出されます。

    続いて、導き出された数字を元に、テキストを切っていきます。

    1. D4…=left(C2,C1)
    2. D5…=if(B5="","",right(left(C2,C5),C5-B5+1))
    3. D6…=if(B6="","",right(left(C2,C6),C6-B6+1))
    4. D7…=if(B7="","",right(left(C2,C7),C7-B7+1))
    5. D8…=if(B8="","",right(left(C2,C8),C8-B8+1))
    6. D9…=if(B9="","",right(left(C2,C9),C9-B9+1))
    7. D10…=if(B10="","",right(left(C2,C10),C10-B10+1))

    ここまでできたら、全体のレイアウトを整えておきましょう。自分で入力する箇所や、自動で表示れる場所を色分けしておけば、間違った箇所をいじって計算が崩壊するのを防ぐことができます。

    ご操作防止のために色分けをしておきます

    では、ここから動作確認をしていきましょう。
    まず、C1に区切りたい文字数を入力します。
    次に、A列に執筆したテキストを貼り付けます。
    すると、自動的にD4から下に区切られたテキストが表示されるので、あとはコピペチェックサイトに一つずつ貼り付けて確認することができます。


    今回は、Googleスプレットシートの文字列を操作する関数をたくさん使っています。
    ここで、それぞれの関数の働きも見ておきます。
    1. join:複数のセルの値を結合する
    2. len:セルの文字数を所得する
    3. left:文字列を左から指定された文字数分取得する
    4. right:文字列を右から指定された文字数分取得する
    この他にもifなども使っていますが、スプレットシートの使いカなどは、またどこかの機会に紹介したいと思います。

    ライティングも、便利なツイールを作れば、執筆も楽になりますし、修正依頼も減らすことができるかもしれません。この機会に、スプレットシートの世界にも足を踏み入れてみるのはいかがでしょうか?