自分を活かして 相手を活かして 今を活かす

【解決】GASで[Ljava.lang.Object;@のエラーが発生してしまった件について

こんにちは、おかちゃんせんせいです!

現在、仕事で要望があり、Googleフォーム・Googleスプレッドシート・GoogleカレンダーをそれぞれGASで連携するテスト検証をしています。

そこで、初めて見るエラーに遭遇したので、備忘も兼ねて共有いたします。

問題のエラーは下記になります。

Exception: Invalid argument: [Ljava.lang.Object;@7b1bacfb

無効な引数のエラーとして、
[Ljava.lang.Object;@7b1bacfb
とコンソールに表示されていましたが、
そもそも[Ljava.lang.Object;の意味がわからず焦ってしまいました。

しかし、よくよく焦らずに調べてみると、
メソッドの戻り値またはパラメタがオブジェクトの配列型の場合[Ljava.lang.Object;と表示される
とのこと。

そこで、エラーが発生している箇所をチェックしてみると、
どうやらカレンダーをcreateEventメソッドで新規作成する引数で問題が起きていることがわかりました。

GAS
event = calendar.createEvent(eventTitle, startDate, endDate, options);

第1引数であるイベント名は文字列。
第2、3引数である開始時刻・終了時刻は日付。

それぞれデバッグで確認する限りでは型に問題はなかったため、
イベントの詳細を指定できる第4引数optionsに問題があることが特定できました。

さらにoptionsの中身をチェックしてみて、怪しいところはguestsオプションくらいだと思い確認してみたところ、guestsにセットした変数managerの型がString型ではなく、配列になっていることが判明。

guestsオプションの型はString型なのに、(一次元)配列をセットしてしまっていたのでエラーになってしまっていたようです。

GAS
  // オプション
  let options = {
    description:"TEST",
    location:location,
    guests:manager,
    sendInvites:true
  }

なので、managerにセットする値を配列から、カンマ区切りの文字列にするためにjoinメソッドを使ってからguestsオプションにセットしてみたところ、無事にエラーを解消できました!

やっぱりエラーが出たからといって焦ってはいけませんねw


この情報が何かお役に立てば幸いです!


最後まで読んでいただき、ありがとうございました!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA