0

Google サイトにはいくつかのページがあり、それぞれのページにはいくつかのガジェットが含まれています。これらのページのコンテンツを編集するスクリプトを作成しましたが、内部サーバー エラーの問題が発生しています。

問題を再現するには:

  1. Google サイトでページを作成します。
  2. サブページ リストなどのガジェットを追加します。
  3. このスクリプトを実行してみてください:

    function doGet() {
     var site = SitesApp.getSiteByUrl("Your site URL");
     var page = site.getChildByName("testeiframe");
     Logger.log(page.getHtmlContent());
     page.setHtmlContent(page.getHtmlContent());
    }
    

サービスエラーが発生します:SitesApp: Internal Error (line 4, file "Code")

ログ出力 (いくつかの HTML は、追加されたガジェットによって生成されました):

[13-05-08 14:56:14:532 BRT] <table class='sites-layout-name-one-column sites-layout-    hbox' cellspacing='0'><tbody><tr><td class='sites-layout-tile sites-tile-name-content-1'>    <div dir='ltr'><table width='100%'>
<tbody>
<tr>
<td width='80%'>
<div><br/>
</div>
<br/>
</td>
<td width='20%'>
<div class='sites-embed-align-left-wrapping-off'><div style='width:100%;' class='sites-    embed-border-off sites-embed sites-embed-full-width'><div class='sites-embed-content sites-    embed-type-maestro'><iframe id='maestro_frame_1365991698' scrolling='no' frameborder='0'     height='200' width='100%' title='Apps Script Gadget'     src='https://sites.google.com/macros/s/AKfycbwzCf4E-Sh22-IEuo2IDDsQImGCQrWzixBGjWmejA/exec?    mid=ACjPJvEwYP7HUKKoqhvc1HAZh7uLQMQY6F31evULDnTKsS-dpoXuw599A_y-    WPzYCnA4CY6Kg2iPA83GUn5gIt9GEi9jzed6nEotMcU&amp;bc=transparent&amp;f=arial,sans-    serif&amp;tc=%23404041&amp;lc=%23336699'/></div></div></div><img style='display:block;text-    align:left;margin-right:auto;' height='300' width='500' data-    props='align:left;displayAs:TOC;maxDepth:6;' data-type='subpages'     src='http://www.google.com/chart?    chc=sites&amp;cht=d&amp;chdp=sites&amp;chl=%5B%5BPage+listing&apos;%3D20&apos;f%5Cv&apos;a%    5C%3D0&apos;10&apos;%3D499&apos;0&apos;dim&apos;%5Cbox1&apos;b%5CF6F6F6&apos;fC%5CF6F6F6&ap    os;eC%5C0&apos;sk&apos;%5C%5B&apos;%5D&apos;a%5CV%5C%3D12&apos;f%5C%5DV%5Cta%5C%3D10&apos;%    3D0&apos;%3D500&apos;%3D297&apos;dim&apos;%5C%3D10&apos;%3D10&apos;%3D500&apos;%3D297&apos;    vdim&apos;%5Cbox1&apos;b%5Cva%5CF6F6F6&apos;fC%5CC8C8C8&apos;eC%5C&apos;a%5C%5Do%5CLauto&ap    os;f%5C&amp;sig=x5z8H4DplZUYp7X4J5EY798sKFM'/><div class='sites-embed-align-left-    wrapping-off'><div style='width:100%;' class='sites-embed-border-off sites-embed sites-    embed-full-width'><div style='display:none;' class='sites-embed-object-title'>TRT4</div>    <div class='sites-embed-content sites-embed-type-calendar'><iframe scrolling='no'     frameborder='0' height='250' width='100%' title='TRT4'     src='http://www.google.com/calendar/embed?    src=gtbq7elsfvo6j9t42dd139c48k@group.calendar.google.com&amp;color=%23668CD9&amp;ctz=Etc/GM    T%2B3&amp;showTitle=0&amp;showNav=0&amp;showDate=0&amp;showTabs=0&amp;showCalendars=0&amp;h    l=en' id='1774561823'/></div></div></div>
</td>
</tr>
</tbody>
</table></div></td></tr></tbody></table>
4

1 に答える 1

1

簡単な答え:エディターを使用してページを再構築します。

質問で提供されたテキストを使用してサイト ページを作成しようとしましたが、報告されたエラーが正確に表示されました。サイトが気に入らないものがあります - iframe タグの属性だと思います。</iframe>(ところで、タグがないことに気付きました。)

あなたの投稿から情報だけを取得して、サイト エディターを使用してページを再現するsrcことができました。結果はエラーなしでスクリプトを通過することができます。

最初のガジェット

title元の質問では、最初のガジェットは Apps-Script ガジェットです (ソースに基づく)。空白のページから始めてtesteiframe、ガジェットを挿入し、サービスとして既に公開されている Apps Script の URLとしてこの値を貼り付けました。

https://sites.google.com/macros/s/AKfycbwzCf4E-Sh22-IEuo2IDDsQImGCQrWzixBGjWmejA/exec?mid=ACjPJvEwYP7HUKKoqhvc1HAZh7uLQMQY6F31evULDnTKsS-dpoXuw599A_y-WPzYCnA4CY6Kg2iPA83GUn5gIt9GEi9jzed6nEotMcU&amp;bc=transparent&amp;f=arial,sans-serif&amp;tc=%23404041&amp;lc=%23336699

前述のように、これにより、問題のある iframe タグがすべて除外されます。

の方法 - HTML エディターを使用してタグを貼り付けることで、iframe をページに直接挿入することもできました<iframe src=...></iframe>このビデオの手順に従って、その方法を学ぶことができます。

セカンドガジェット

もう 1 つのガジェットはカレンダーです。src私はあなたが提供したカレンダーを単に使用しました。

結果の HTML

スクリプトを使用すると、次のようにロガーの内容がprettyprinterを介して渡されます。

<table class='sites-layout-name-one-column sites-layout-hbox' cellspacing='0'>
<tbody>
  <tr>
    <td class='sites-layout-tile sites-tile-name-content-1'>
      <div dir='ltr'>
        <img class='igm' style='display:block;text-align:left;margin-right:auto;'
        height='800' width='500' data-props=
        'height:800;igsrc:http#58//0.gmodules.com/ig/ifr?mid=0&amp;synd=trogedit&amp;url=http%3A%2F%2Fwww.gstatic.com%2Fsites-gadgets%2Fiframe%2Fiframe.xml&amp;up_iframeURL=https%3A%2F%2Fsites.google.com%2Fmacros%2Fs%2FAKfycbwzCf4E-Sh22-IEuo2IDDsQImGCQrWzixBGjWmejA%2Fexec%3Fmid%3DACjPJvGiKo17cYG9syr9gGYY44PEyWdKDJPD4xkYErDWyxsn_6TjyOplXYq0ZCu405D-IKLl41lZVMC648mjzJUxC7EEKTgx7_F8gEE_ZsjP9cFo%26bc%3Dtransparent%26f%3DArial%2C%2BVerdana%2C%2Bsans-serif%26tc%3D%2523444444%26lc%3D%25230033cc&amp;up_scroll=no&amp;w=100%&amp;h=800;mid:0;spec:http#58//www.gstatic.com/sites-gadgets/iframe/iframe.xml;up_iframeURL:https#58//sites.google.com/macros/s/AKfycbwzCf4E-Sh22-IEuo2IDDsQImGCQrWzixBGjWmejA/exec?mid=ACjPJvGiKo17cYG9syr9gGYY44PEyWdKDJPD4xkYErDWyxsn_6TjyOplXYq0ZCu405D-IKLl41lZVMC648mjzJUxC7EEKTgx7_F8gEE_ZsjP9cFo&amp;bc=transparent&amp;f=Arial,+Verdana,+sans-serif&amp;tc=%23444444&amp;lc=%230033cc;up_scroll:no;width:100%;'
        data-type='ggs-gadget' data-igsrc=
        'http://0.gmodules.com/ig/ifr?mid=0&amp;synd=trogedit&amp;url=http%3A%2F%2Fwww.gstatic.com%2Fsites-gadgets%2Fiframe%2Fiframe.xml&amp;up_iframeURL=https%3A%2F%2Fsites.google.com%2Fmacros%2Fs%2FAKfycbwzCf4E-Sh22-IEuo2IDDsQImGCQrWzixBGjWmejA%2Fexec%3Fmid%3DACjPJvGiKo17cYG9syr9gGYY44PEyWdKDJPD4xkYErDWyxsn_6TjyOplXYq0ZCu405D-IKLl41lZVMC648mjzJUxC7EEKTgx7_F8gEE_ZsjP9cFo%26bc%3Dtransparent%26f%3DArial%2C%2BVerdana%2C%2Bsans-serif%26tc%3D%2523444444%26lc%3D%25230033cc&amp;up_scroll=no&amp;w=100%&amp;h=800'
        src=
        'http://www.google.com/chart?chc=sites&amp;cht=d&amp;chdp=sites&amp;chl=%5B%5BGoogle+Gadget&#39;%3D20&#39;f%5Cv&#39;a%5C%3D0&#39;10&#39;%3D499&#39;0&#39;dim&#39;%5Cbox1&#39;b%5CF6F6F6&#39;fC%5CF6F6F6&#39;eC%5C0&#39;sk&#39;%5C%5B%22Include+gadget+(iframe)%22&#39;%5D&#39;a%5CV%5C%3D12&#39;f%5C%5DV%5Cta%5C%3D10&#39;%3D0&#39;%3D500&#39;%3D797&#39;dim&#39;%5C%3D10&#39;%3D10&#39;%3D500&#39;%3D797&#39;vdim&#39;%5Cbox1&#39;b%5Cva%5CF6F6F6&#39;fC%5CC8C8C8&#39;eC%5C&#39;a%5C%5Do%5CLauto&#39;f%5C&amp;sig=LIupg-AjxUbah_DqtRj3JecPeDg' />

        <div class='sites-embed-align-left-wrapping-off'>
          <div style='width:100%;' class=
          'sites-embed-border-off sites-embed sites-embed-full-width'>
            <div style='display:none;' class='sites-embed-object-title'>
              Google Calendar
            </div>

            <div class='sites-embed-content sites-embed-type-calendar'>
              <iframe scrolling='no' frameborder='0' height='250' width='100%' title=
              'Google Calendar' src=
              'http://www.google.com/calendar/embed?src=gtbq7elsfvo6j9t42dd139c48k@group.calendar.google.com&amp;color=%23668CD9&amp;ctz=Etc/GMT%252B3&amp;showTitle=1&amp;showNav=0&amp;showDate=0&amp;showTabs=0&amp;showCalendars=0&amp;hl=en'
              id='155565547' name="155565547"></iframe>
            </div>
          </div>
        </div>
      </div>
    </td>
  </tr>
</tbody>
</table>

ご指摘のとおり、ガジェットはそのコードのほとんどのソースです。私の場合、コードの一部が明らかに渡されencodeURIComponent()たのに対し、あなたの場合はそうではなかったのは不思議です。(多分それは実際の問題を指していますか?)

于 2013-05-08T05:50:23.147 に答える