Welcome to Software Development on Codidact!
Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.
How to solve the "Cannot call from this context" error?
Temporary notice: this is part of an ongoing project of transferring and splitting my canonical from Stack Overflow on common errors in Google Apps Script. As soon as the Q&As are finalized, it will be removed.
Oftentimes, when attempting to run a method on a built-in Google service from a standalone script, the runtime throws an exception that the given method cannot be run in "this context". The exact error message is always structured as follows:
Exception: Cannot call <service name>.<method name>() from this context
What is the underlying reason for the error and how to solve it?
1 answer
Meaning
This error happens on context mismatch and is specific to container-bound scripts.
The reason for the error is attempting to call a method only available in one document type (usually, getUi()
as its Ui
class is shared between services) from a script bound to a document of other type (i.e., DocumentApp.getUi()
from a spreadsheet-bound script) or from a standalone script.
Reproducing
To get a container-bound script context mismatch error, declare and run this function in a either a standalone script or one that is container-bound to a document other than a Google Docs one:
const cannotCallFromThisContext = () => {
try {
DocumentApp.getUi();
} catch(e) {
console.log(e);
}
};
Fixing
There is no fix for the error per se other than removing all calls for container-bound methods.
0 comment threads