• Reading time:14 mins read

全業務Notion化計画の途中だというのにCodaに浮気している私(@saosaoyamayama)です。

前回の投稿ではCodaの基本から一歩進んでいろいろいじってみた所感などを書きました。

今回は私がCodaに興味を持った理由たる「関数の自由度」について書きますよー。

主に「データベース外で関数を動かす」ことと「条件付き書式のような仕組み」についてです。

Coda、すごいよ。

今回Codaでやったこと

カードビュー
カードビュー
  • ①ブロックエリア(テキストエリア)で関数を動かす
  • ②条件付き書式(カスタム数式相当)を設定する
  • ③テキスト化されてしまったマルチセレクトプロパティを分離する(別記事に書きます)

すごーくピンポイントで遊んでいる感じが濃厚ですね。

結論、どれもうまくいきました。最後の「分離する」については、分離まではできたって感じですが、思ったよりもいろいろな関数が使えることがわかりました。

では①と②を順番にやってみましょうかね!

Codaのブロックエリアで関数を動かしてみるよ!

こういう書き方すると意味わからないですよね。例えるなら「Wordの文章の途中に関数を記述して、データベースと連携させて、データベースが更新されたらWordに埋め込んだ数字が自動的に更新されるようにしよう」ってことですよ。

意味わからんでしょ……。

前回の投稿でCodaにインポートしたワールドトリガーのスペック表。あれを使って「人数」を数えます。

  • リスト内の人数は○人
  • そのうち18歳以上は○人
  • 18歳未満は○人

こういうテキストブロックを並べて、「○」人の数字を関数で制御します。

できるから。Codaならできるから。泣いたよ、私は。

関数ブロックの作り方と使い方

フォーミュラブロック

Notionと同じです。スラッシュ「/」でメニューが表示されます。「/f」で「Fromula」を探しましょう。

※Formulaなんちゃらという別のメニューもあるのでご注意を。

関数入力画面

これが関数記入の初期画面です。

Add formula」の中に関数を記述すると「=Blank」に答えが表示されます。

条件付きカウント「countif」を設定

Codaでどんな関数が使えるのか把握しておりません。Notionでは「countif」が使えなかったんですがCodaはどうだろうか。

つーことで関数を打ち込んでみました。

count系関数

「Add formula」に「cou」と打ち込んだところ……。

count系の関数が結構使えるじゃないかー! これはうれしい。まずはcountifを使うことにします。

countifは日付や数字・テキストなどの「個数」を数える関数です。ただ数えるのではなく、条件に一致したモノだけを数える便利過ぎるコンビニ関数

countif(○○, ●●)
→○○が●●、の条件を満たす「個数」を数える

countif(年齢, 18歳以上)

最初に、年齢が18歳以上の人数を数えることにします。countifで書くと↑↑こんな感じです。

countifの組み立てかた
結構直感的だね

先ほどのcount系関数の中から「countif」を選択しました。そうすると下段にはデータベース名「WT」が表示されます。

また関数のDetailsとして「list」がハイライト化され、その下に何やらカンマ区切りの英語が……。これが結構大事だった。

A Table, column, or list of values

Notionよりもヒントが的確なんですよね〜。つまり、CountIfのうしろは↑↑の形になるように記述してくださいねってことです。

  • A table:WT
  • column:年齢

これが該当します。では下段に表示されている「WT」をクリックしてみますよ。

countifの後はカンマで区切る

関数内に「WT」がセットされました。ヒントに従ってカンマを打っつと、下段にカラム名(Notionのプロパティ名に相当)がズラリと表示されました。

年齢」をクリックしてみまーす。

不等号が表示される

関数に「年齢」がセットされましたね!

下段には等号・不等号関係の関数が出てきました。こりゃ便利だ〜。

「18歳以上」を条件にしたいので「>=Value」をクリックしますよ。

条件の値を入力

続いては「どの年齢にしますかー」と。至れり尽くせりじゃねーか……。

もちろん任意の数値を手入力してもOKですよ。

今回は18をクリックし、関数の最後に「)」を付けます。

関数が動く

「23」だってよ! 18歳以上は23人いるってよ!

私が関数を記述したのは「ブロック」を打ち込むエリアです。Formula、つまり関数をテキストの支配圏に書き込んだわけです。ではこの関数、現状「何ブロック」と認識されているんでしょうか。

Notionと同じく、ブロックの左側にホバーすると三点ボタンが出現するので、そこから確認してみます。

関数がテキストと認識されている

Formulaを記述しても、その答えは「テキスト」として認識されています。面白いっすね。

つーことは「23」の前後にテキストを打ち込めるのでは??

やってみよう。

Formulaの前後にテキストを置いてみる

「18歳以上は23人」と表示させたい! そんな時は「23(formula)」の前後に半角スペースを入れます。

テキスト + 半角スペース + /f(関数記述) + 半角スペース + テキスト

半角スペースを入れないと関数が消えるのでご注意ください。

関数の前後に半角スペース

ちょっとわかりにくいかもしれませんが、オレンジ矢印の部分に半角スペースがあります。

半角スペース

半角スペースを選択してみました。水色になっている部分ですね。

テキストの「中」に関数を入れてデータベースと連動させるには、関数を半角スペースで囲めばOKってことです。

関数プラステキスト

リストの総数カウントには「count」を使いました。

これで完成! すべて正確に数字が算出できました。

試しにデータベース内の1人の名前を消してみたところ、リストアップ人数が54人になり、その他データは触っていないので変わらず。リアルタイムで数値が変動しました。

うーん。天才では???????

Codaで条件付き書式を設定してみよう

条件付き書式大好き

続いては条件付き書式です。Notionはここが弱いよね……。

私はスプレッドシートで「期日過ぎたらセルの色を変える」っていうアラートを頻繁に使っていて、これがないとやっぱり不便でした。

Codaではこれができます。今回は日付条件ではありませんが、試してみたら日付でも問題なくできました。

では今回の条件ですが、以下に当てはまる「名前」を青字で表示するっていう書式を設定します。

  • 属性:高校生
  • 肩書:ガンナー

属性や肩書に色を付けるのではなく「名前」です。スプレッドシートの条件付き書式でこの設定を組む場合「カスタム数式」を使うレベルです。

肩書だけに条件を設定してみる

まずはお試しとして、肩書が「ガンナー」の場合に名前を青くする、っていう設定を作ってみます。

条件付き書式設定ボタン

「肩書」のカラム名をクリックするとメニューが出てきます。

その中から「Conditional format」を選択。

条件付き書式設定初期画面

これが初期画面です。

条件振り分け設定と選択肢、書式設定、見切れていますがこの下に「どのカラムに書式を適用するか」の設定ボタンがあります。

条件振り分け

条件設定として以下がデフォルトで入っています。

  • is any of:どれかに当てはまる
  • is not:○○ではない
  • blank/not blank:データなし/データなしではない

日付条件を設定する場合は「today」など選択肢が変わりますよー。親切。

※canvas controlは試していません。

条件を設定する

今回は「肩書→is any of→ガンナー」です。ガンナーにチェックを入れ、文字色は青に設定しました。

少し下にスクロールしますよー。

APPLY TO

APPLY TO」が「どのカラムに書式を適用しますか」です。

青字にしたいのは「名前」カラムなので「名前」を選択します。

そんじゃ、テーブルを確認してみよう。

条件付き書式が発動

肩書がガンナーだったら名前を青くする。

No.2ガンナーの弓場さんのお名前が青くなっていますねー! 大成功じゃないですか。

しかし、着地点は「高校生ガンナーだけ青くしたい」なので、大学生である弓場さんは青字になったらダメなやつです。

では、条件を増やしていきますよ。

肩書と属性に条件を設定してみる

スマートなお作法かどうか知りませんが、私は条件付き書式にもFormulaを使いました。まさに「カスタム数式」的なアレです。

新しいルールを設定

新しい条件付き書式を設定する場合は「+Add rule」を押します。

先ほど作ったルールを編集してもいいし、まあやり方はいろいろありそうですね。

条件付けするからむを選択

どのカラムに条件を付けるか指定します。

属性と肩書に条件を付けたいのですが、複数選択できないので「Formula」を使うことにします。

containを使う

こんなのが開きました。セレクト系の条件設定には「Contains」を使うみたいですね。

まずは『属性に「高校生」が含まれていたら〜』にすればOK。じゃあやってみますよ。

サジェストを見ながら組み立てる
value.Contains(search,search...)

ヒントと同じ形に仕上げていけばいいんだろうなっていう直感で進めてみました。

1つ目の条件設定
value.Contains(search,search...)
属性.Contains(高校生)

1つ目の条件はこの形でOKってことですよね。では2つ目の条件を付け加えるにはどうすればいいんだろうか。

2条件を設定

「+」付けたり「&」付けたり手探りしたところ「and」が正解でした。

属性.Contains(高校生) and 肩書.Contains(ガンナー)

属性が高校生で、肩書がガンナーの「名前」を青くする。キャプチャを見てわかるとおり、この時点で里見くん(No.1ガンナー)と片桐くんの名前が青くなっておりますね。

では、大学生なのに青字になっていた弓場さんはどうかというと……。

条件通りに書式が適用された
弓場さんが黒くなった

かなり見にくくなりましたが、弓場さんは大学生なので黒字、ゾエさんと澄晴犬飼は高校生ガンナーなので青字

見事に複数条件付き書式が適用できましたよー!

使える関数が多すぎて検証できない幸せ

ヘッダー画像
Notionだって言ってもバレないCoda

Notionと比較して、使える関数は確実に多いと思います。すべての関数が確認できるページ発見。

個人的には最低でも「split」「count系」「substitute」は欲しかったので、関数についていえばCodaに軍配が上がります。

あとは慣れですかねー。Notionのprop()記述よりもわかりにくいような……。

いろいろ遊びながら「便利」を探してみようと思います。

さてさて、NotionからCodaにデータベースをインポートしたときにマルチセレクトタグが結合してしまった件

これについては次の投稿にまとめることにしました。結構ややこしい。

S.Nakayama

一帖半執筆工房代表。 WEBコンサル・マーケ企業のフリーランスPMとして計9サイトの運営を指揮。DigitalCameraWorldの認定フォトグラファー。 現在は2社5メディアの進行管理をしながら文章校閲・校正者・ライターとしても活動中。