Google Spreadsheetでは、ARRAYFORMULAが大変便利ですが、
ユーザー定義関数(カスタム関数)をGASで作った際に、
ユーザー定義関数を
=ARRAYFORMULA(someFunc(A:A))
のように適用しようとしてerrorに見舞われました。
someFunc() is not a function的な。
暫し考えて、spreadsheetは
[[],[],[]]
といった二重配列の構造であることを思い出し、
mapを二重に実行して処理することで、無事望んだ結果を得ました。
以下のような感じです。
function arrayformulaFunc(arr) {
//arrayformulaに対しては、二重のmapを使わないと処理されないことの対処
return arr.map(a => {
return a.map(b => someFunc(b))
})
}
function someFunc(str) {
return str.length//何かの単体処理
}
ARRAYFORMULAは最高に便利なので、カスタム関数と組み合わせるなら、こんな感じでやれるのだな、と学びがあったのでシェア。