3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ARRAYFORMULAで、カスタム関数を使うには、二重配列処理が必要だった

Last updated at Posted at 2022-04-26

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は最高に便利なので、カスタム関数と組み合わせるなら、こんな感じでやれるのだな、と学びがあったのでシェア。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?