【IT】GAS(Google Apps Script)でnot a functionになったら?

事務仕事をしていると大活躍のMicrosoft Office
少し小難しい処理をする方なら、マクロやらVBAやらを便利に利用されていることでしょう。

そんな、Microsoft Officeに似た機能を備えていて、なおかつ、有難いことに無料で使えるが、
GoogleのオフィススイートGoogleドキュメントGoogleスプレッドシートなど)ですよね♪

プライベートでOfficeっぽい作業をしたい場合、
上記のGoogleのサービスで事足りるかな〜と思うことも多いかと思いますが、
そんなGoogleのオフィススイートにも、
Microsoft OfficeのマクロやらVBAやらに類似する機能があるこをはご存知ですか?

その名も、Google Apps Script
通称:GASと呼ばれているようです。

こちら、「使いこなせたら便利だな〜」と思いつつ。
必要になる作業をプライベートでしないので(笑)、これまではほとんど触ったことが無かったのですが。

つい先日、Googleスライド(OfficeのPowerPointにあたる機能)に、
文字列データから自動で定形フォーマットを生成したいな、と思ってGASを触ってみました。

その際に、エラーになってしばらくスタックした問題があり、そのポイントを解決するのに、
WEB上(特に日本語の情報)ではなかなか解決策にたどり着けなかったので、

「もし同じポイントでハマる方がいらっしゃったら…」

という気持ちで、この記事を投稿させて頂きます!

GASでしようとしたこと

指定スライドにGASで長方形のオブジェクトを生成・配置して、
そのオブジェクトの背景色を設定する。

GASでまずは踏んだ手順

  1. スライドの追加(appendSlide
  2. 長方形オブジェクトの生成(var rect = SlidesApp.ShapeType.RECTANGLE
  3. 長方形オブジェクトに背景色の設定(setSolidFill
  4. スライドに長方形オブジェクトを追加(slide.insertShape(rect)

GASで発生したエラー: not a function

setSolidFillの部分で"not a function“のエラーが発生しました。

が、調べても、調べても、色を設定するのはsetSolidFillメソッドという情報に出会うのみで、
なぜ「not a functtion」になるのか、残念な私の頭では、全然わからず(汗)。

not a functionエラーの解決方法

しばらくあれこれデバッグ検証したりし、ネットの海をさまよったりしました。
そうしてしばらく頭を悩ませたところで。
偶然出会ってなんとなく眺めていたサンプルコードが、どうも、

子オブジェクトのプロパティを設定するよりも先に、
子オブジェクトを親オブジェクトにinsertしている

ことに気づきました。

順序としては、ざっくり言うと

  1. スライドオブジェクトを新規追加(appendSlide
  2. 長方形オブジェクトを生成(var rect = SlidesApp.ShapeType.RECTANGLE
  3. 親オブジェクトに追加(slide.insertShape(rect)
  4. 長方形オブジェクトの背景色プロパティを設定(rect.setSolidFill

みたいな感じです。

個人的な感覚としては、子オブジェクトを生成したら、

設定したい"プロパティ"を先に設定して
“最後"に親オブジェクトにinsert

というイメージがあってですね…これ、私のプログラミング経験の浅さによる問題ですかね??

プログラミング、なんとなく出来はしますが、全く得意ではないので、正直判断つきませんが(汗)。

個人的には

「プロパティを先に設定させて〜。最後にinsertさせて〜」

という気分だったので、全然気づかず(汗)。

運良く正解に辿り着くサンプルに出会えて、本当に偶然&ラッキーだったという感想です。

まとめ

というわけで。
同じ悩みを抱えている方がもしいらっしゃいましたら、ちょっぴり参考になれば幸いです。

GASで、プロパティ設定メソッドでエラーになったら、

「該当のオブジェクト先に親オブジェクトに追加」

してみて下さい!

私は上記の一例しか経験してないので、違うケースがあるかもですが…。
解決する可能性もあると思います(希望!)。

PROFILE

ma07
元SE(エセE)。
現在は、WEBライターっぽい内職をしつつ、99.99%専業主婦です。
「商売は、目先の利益を考えたらいかん。どうやったら喜んでもらえるか、何を求められているかに応えるのが商売だ」
という、木村清氏(すしざんまい社長)の言葉にえらく感動したので、自分もそういう気持ちを持って、誰かにとって多少でも有益な情報を発信をしたいなと思っている最中です。

IT

Posted by ma07