【GAS】エラー対処法|Exception: Cannot call DocumentApp.getUi() from this context|FormApp.getUi(), SpreadsheetApp.getUi(), SlidesApp.getUi()

AppScript appscript GAS-prograshi(プロぐらし)-kv AppScript
記事内に広告が含まれていることがあります。


Google App Script(GAS)でプログラムを実行したときに、以下のようなエラーが発生することがあります。

エラー

Exception: Cannot call DocumentApp.getUi() from this context.

Exception: Cannot call SpreadsheetApp.getUi() from this context.

Exception: Cannot call FormApp.getUi() from this context.

Exception: Cannot call SlidesApp.getUi() from this context.


ここではこのエラーの発生原因と対処法について解説しています。


エラーの内容

このエラーは、このコンテクスト(実行しているAppScriptの処理)でDocumentApp.getUi()やSpreadsheetApp.getUi()、FormApp.getUi()、SlidesApp.getUi()を呼び出せませんというものです。


エラーの原因

GoolgeのAppScriptはスプレッドシートで使われることが多いですが、実はスプレッドシートだけでなくGoogleドキュメントやスライド、フォームでも使うことができます

Googleのスプレッドシート、ドキュメント、スライド、フォームをオブジェクトとして取得するのがSpreadsheetAppなどです。これらのオブジェクトクラスが現在AppScriptを実行しているサービスと一致している必要があります

例えば、スプレッドシートでAppScriptを組んでいるときに、Googleドキュメントを取得するDocumentAppクラスを使うと当然使えないということになります。


クラス対象のサービス
SpreadsheetAppスプレッドシート
DocumentAppドキュメント
SlidesAppスライド
FormAppフォーム


よくある発生原因

このエラーが発生するあるあるは、Google公式のAppScriptのヘルプページにあるコードをコピペしたときに発生しがちです。

AppScript自体はスプレッドシートやドキュメントやフォームなどに属するわけではなくどれでも使える汎用的なものです。

なので、コードの例もスプレッドシートを対象にしたものもあれば、ドキュメントを対象にしたものもあるわけです。

例えば、Enum ButtonSetというページのサンプルコードは以下のようになっています。

// Display a dialog box with a message and "Yes" and "No" buttons.
var ui = DocumentApp.getUi();
var response = ui.alert('Are you sure you want to continue?', ui.ButtonSet.YES_NO);

// Process the user's response.
if (response == ui.Button.YES) {
  Logger.log('The user clicked "Yes."');
} else {
  Logger.log('The user clicked "No" or the dialog\'s close button.');
}

冒頭でDocumentApp.getUi();を使っています。


スプレッドシートでGASを組んでいるときに、このヘルプページにたどり着き、このコードをコピペして実行すると、以下のエラーが発生するわけです。

エラー

Exception: Cannot call DocumentApp.getUi() from this context.


エラー対処法

このエラーが発生したときは自分の使っているサービスと指定したクラスが一致しているか確認してみてください。

クラス対象のサービス
SpreadsheetAppスプレッドシート
DocumentAppドキュメント
SlidesAppスライド
FormAppフォーム

タイトルとURLをコピーしました