なんだかよく分からない謎の単純作業その2をGASで自動化

久しぶりに投稿しようとしたら何か入力インターフェイスが変わってて戸惑っています。。。
ていうかちょっとそれは後で調べるとして、クラシックの方に戻しました(方法はプラグイン『Classic Editor』を入れて有効化するだけ)

あと前回の
なんだかよく分からない謎の単純作業をcliclickとGASで自動化・前編
でGASはこの後!ってやった後に完全に飽きて続かないまま別の作業の記事を書きます。
しかしそっちもまた定期的なタスクになってもっと機能を充実させる必要が出てきたので、それも完成したらまとめて記事にしたいなと思っています。きっと。多分…

なんだかよく分からない謎の単純作業その2とは
大まかに言うとこの、これだからお役所は…という感じの分かりにくさを誇る謎のデータの謎のリストがあり、
黄色の列のデータを、灰色を付けた不要な項目を除いて…
こういった形でデータ階層が一目でわかるように並べ替えるというものです。
パッと見で分かりにくいんですが、上の画像で縦1列に並んでいる黄色のデータは右にある大・中・小(実際にはもっと沢山の階層がある)の分類に属した階層を成しています。
あとこれが300項目くらいあります。

 

さてそんなに細かく解説する時間が無いので備忘録程度になるのですが、思考含めた製作段階を書き起こしていきます。

やり方を考える

💭元データから黄色列のデータセルをコピーして、ネストの深さの分だけ右にオフセットして別シートにコピペすればいいのでは?

💭ネストの深さは黄色列から分類名のセルまでの間のセル数として取得できるのではないか?

文章に起こしてみよう!
ゴリゴリの文系なので、論理式だけで考えるとワケワカメになってしまうのが私です。

 

なのでなるべく文章で条件分岐や繰り返し処理を書いてから作っていたのですが、今回テーブルリストを使ってスクリプトの入れ子の概念を念頭に作ってみたらもっとスムーズに文章で設計図を作れました。

前提として

「元データ(originSheet)」…元のデータを転記したシート

「整形済データ(copySheet)」…必要なデータだけが処理されて並べられる予定のシート

「不要文字列(needlessSheet)」…A列に処理時に除きたい行の連番号を入力したシート

シートの3枚を使って処理をしていきます。

整形済データの中身とフォーマットをクリアする(繰り返しテストするので最初に初期化します)
元データのB列の中身を2元配列originArrayValue2に格納する
配列originArrayValue2を1元配列originArrayValue1にする
変数iを1元配列originArrayValue1の要素番号にして、0からlastRowまで回す
  もしA列の中身が配列needlessArrayValue1に一致しなければ
   

列Bから次にブランクでないセルに当たるまで列Cの変数i行originRowRangeを右に1個ずつoffsetしていく

  最後のブランクセルの列数nestNumを取得する
  当該行iの列BのセルoriginTagRangeをブランクセルの列数nestNumを指定して、整形済みシートに値をコピーする
整形済みデータシートの行番号を変数cをにして、0からlastRowまで回す
10   変数c行の1~4列の範囲の中身をcopyRawRangeで取得する
11   変数c行から下データがある可能性のある範囲全部copyRestRangeを取得する
12   もし範囲copyRawRangeが全てブランクかつ、範囲copyRestRangeが一つでもブランクでない場合
13     変数c行を削除する
14     変数cにマイナス1をする

全てのスクリプトを書き起こしては無いのですが、この際に「if構文」「while構文」「for構文」などの入れ子になる処理を文章にすることで、頭ゴチャゴチャにならずに個々のスクリプトを考えることが出来ました✌

GASで作ってみよう
先の1~8までの処理をOffsetCopy()という関数で、9~14までをdeleteRow()という関数に分けて、最後にprocessing()関数でまとめて実行するという形で作りました。
グローバル変数 今まで使ってなかったんですが、絶対使った方が良いですね( ^^) _旦~

こんな感じで完成~~(本番データの、もっとネスト数の多いリストの仕様のものです)

丸半日掛かりましたが、しっかり文章で設計図を書いたおかげて完全に迷走することはありませんでした。ヤッタネ!


Slackのロゴが変わりましたね。

個人的に変わる前のロゴはどうも「少し前の最先端」という感じの野暮ったさを感じていたので初見から割といい感じだと思っていたのですが、世間はそうでも無かったようで、ハーケンクロイツみたいで良くないみたいなアホな言いがかりまで付けられてましたね。(Googleフォトのアイコンも似たようなもんやろ)

しかし同時に出された変更理由の記事がなかなか説得力があったみたいで、すぐにツイッターなんかは賛成派の意見が多くRTされていましたね。

私もその中で書かれていた「色々な色の背景と合わせにくい」「斜めの形状がバランスを取りにくい」という理由はかなり爆分かりでしたね。本当にロゴの周りとの合わせやすさ大事大事&大事。

ロゴをごにょごにょする(デザインと言うほどじゃないんですが、サイトに配置する時など)仕事をしていると、背景の色に縛りが合ったり、周囲の要素に安定感が影響されやすいロゴはかなり気を遣うところです。デザイナーの腕の見せ所とも言いますが。

そういう意味で前々から最強だと思ってるのがGithubのオクトキャットちゃんですね。

ね、まずキャラがウィットに富んでて爆カワなのもさることながら

  • シルエットですぐ分かる
  • 色数が少なく、特に背景に接する部分が全て黒
  • 着地面があるのでどこに配置しても安定する
  • 正円のアイコンにも綺麗に収まる

この辺の要素が本当にアイコンとして優れています。
Githubのデザイナーさんは相当アレンジして使う時楽でしょう。
Slackで言うと前のロゴはシルエットも弱かったですよね。白抜き黒抜きすると単に傾いてるシャープなので。
新しいアイコンはシルエットで分かる分白抜きも出来るし、この辺の問題も概ね解決してますよね。

 

 

 

 

 

 

 

ところでロゴと言えば一部で話題になっている近年のハイブランド化粧品ロゴの無個性化問題。これも何らかの合理的な理由があるとは思うんですよね。。

概ねセリフ体で太めのフォントになってるのを見ると、やはり宣伝媒体が増えたことで色々な状況に対応できる、例えば写真などカラフルな背景に重ねても埋没しないようなロゴを目指しているのかなという感じもします。あるいは化粧品業界は今やロゴ以外で個性を出す手法が主流で、ロゴの主張が強いと逆にその個性の邪魔をしてしまうから敢えて無個性にしているというのも考えられますね。
そのロゴ以外で出す個性が何なのかははっきりしませんが…

この辺は考えておくと色々応用が効きそうなので全然結論出てないけどメモっておきました。
また何か思い付いたら書きます(その前に普通の記事を書く習慣をつけようネ^^)

 

カテゴリーGAS

コメントを残す

メールアドレスが公開されることはありません。