"ScriptError: Authorisation is required to perform that action." when running google.script.run from Library

1.2k Views Asked by At

Regards,

I have found several questions regarding this error : "ScriptError: Authorisation is required to perform that action." but I can't find one that is about my issue.

What I am trying to do is call a function .gs file from .html file using google.script.run where both of the file is in Library. Referring to this answer, this answer and this bug report, I have created the "wrapper function" in the script that is using the library, but still failed to finish the execution.

Here's what I did :

.html in Library :

<html>

<head>
  <script>
    function onFailure(error) {
      console.log("ERROR: " + error);
    }

    function myfunc() {
      console.log("HERE");
      google.script.run.withFailureHandler(onFailure).callLibraryFunction('LibraryName.test', ['test123']);
    }
  </script>
</head>

<body>
  <button onclick="myfunc()">CLICK</button>
</body>

</html>

.gs in Library

function test(x){
  Logger.log(x);
}

.gs in script that is using the Library:

function callLibraryFunction(func, args) {
  var arr = func.split(".");

  var libName = arr[0];
  var libFunc = arr[1];

  args = args || [];

  return this[libName][libFunc].apply(this, args);
}

The console logs HERE but then it logs ERROR: ScriptError: Authorisation is required to perform that action. instead of the expected output, test123.

NOTE: The HTML is for custom modeless dialog box in Sheets and not for Web App.

I really hope someone can help me in this. Thank you in advance.

1

There are 1 best solutions below

0
Moayad Hani Abu Rmilah On

You need to grant access of the library "LibraryName" as an authorized app in your Gmail account the same way how you grant access to the calling script. I guess you have called the method HtmlService.createHtmlOutputFromFile(...) in your library. This requires more authorization. You need to grant this. What you can do is create a temporary function in the library that has HtmlService.createHtmlOutputFromFile(..). Run it from the script editor and the authorization requirement window appears. Proceed in granting access...