日々精進

新しく学んだことを書き留めていきます

Apexはステップ実行出来ない。代わりにチェックポイントを使う

ApexではBreakpointを使えず、デバッグは主にデバッグログかチェックポイントという機能を使うらしい。マジカヨ。。 チェックポイントは疑似Breakpointのようなもので、チェックポイント到達時点でのメモリやDBの状態を保存 しておいてくれて、後からそれを参照したり、その時の状況でコードを動かしてみたりできる。

参考:

help.salesforce.com

ApexからAccountを作成すると「UNKNOWN_EXCEPTION, portal account owner must have a role: []」エラー

原因はAccountのオーナーとして設定したユーザにRoleが設定されていなかったため。

Account a = new Account();
a.OwnerId = user.Id; // このユーザのRoleが設定されていなかった

ユーザにRoleを設定すると直った。

参考:

tyoshikawa1106.hatenablog.com

Googleスプレッドシートでセルがいくつかの文字列のうち一つに一致しているかどうかを判定する

以下のようにORを繋げて書くのダルいのでもっと簡単に書ける方法を探した。

=INDIRECT("status!$A:$BH"),COLUMN(),FALSE)="A" OR INDIRECT("status!$A:$BH"),COLUMN(),FALSE)="B" OR ...

REGEXMATCH関数を使って正規表現でマッチさせるのが良さそう。例は以下。

=REGEXMATCH(VLOOKUP($A4,INDIRECT("status!$A:$BH"),COLUMN(),FALSE), "^未着手|代行中|停止中$")

参考:

support.google.com

GoogleスプレッドシートのIMPORTRANGEは条件付き書式ではうまく動かない

条件付き書式を判定する数式の中にIMPORTRANGEを入れてもなかなか正しく書式が反映されず困った。 セルに条件付き書式で使っているのと同じ関数を入れて実行すると条件付き書式も更新されることがあった。 どうも条件付き書式の数式は実行の優先順位が低い感じがする。参照先のシートで値を変更した時も、 セルに埋めている関数はすぐに更新された値を取得したが条件付き書式の方は再計算されなかった。

しょうがないので別シートを作ってそっちにIMPORTRANGEを使った関数を書き、 条件付き書式の中からそこを参照するようにした。不便だ。。

WAS Libertyを起動すると「CWWKC2262E: /WEB-INF/web.xml デプロイメント記述子で、サーバーは 3.1 バージョンおよび http://xmlns.jcp.org/xml/ns/javaee 名前空間を処理できません」エラー

原因はweb.xmlのバージョンが3.1だから。 今回はweb.xmlが無くても大丈夫だったので削除して解決した。

参考: IBM Knowledge Center