Google Apps Script remove warning banner

前端 未结 5 2018
攒了一身酷
攒了一身酷 2020-12-17 04:14

I am putting a GeoChart on my Google Site using a Google Apps Script. Viewing the page when I am not logged into my google account shows a grey banner at the top with states

5条回答
  •  有刺的猬
    2020-12-17 04:54

    The two options that would seem possible for suppressing that warning from a WebApp made using HtmlService are:

    1. Custom CSS, e.g. in Stylesheet.html (assuming you've started from the WebApp script template).

      .warning-bar {
        visibility: hidden;
      }
      

      I tried this, and found it had no effect on the final display. If there is an element with class="warning-bar" inside the iframe'd HTML, that element will be hidden. Likewise if we try to modify the warning bar by id, #warning; no impact on the element outside of our iframe.

      There is no CSS support for parent elements, so this is a dead end.

    2. Use client-side JavaScript to manipulate the elements outside of our iframe. By adding code to JavaScript.html (again, assuming WebApp script template), we can try to change document elements.

      With jQuery:

      $('.warning-bar:first',parent.document).hide();
      

      With pure JavaScript:

      top.getElementById('warning').style.display = 'none';
      

      Neither of those work. The configuration that Google uses for hosting Google Apps Script blocks JavaScript running in an iframe from accessing items in the parent page. Here's the error that shows up in the JavaScript console:

      Uncaught SecurityError: Blocked a frame with origin "https://n-gtoiuxrqufcpexrnkeysovsfb7ibnjwczjyz6ii-script.googleusercontent.com" from accessing a frame with origin "https://script.google.com". Protocols, domains, and ports must match.

      They've forced our script's iframe to have a host domain that differs from that of the surrounding document, enabling the single-domain security policy to block the exact sort of actions we're trying to do.

    According to the issue you linked to in your quesiton, the only option for avoiding that annoying message is to switch to a paid Google Apps Domain (e.g. Business or Education).

提交回复
热议问题