1

ヘッダーとフッターなしでGoogleスプレッドシートを埋め込みたい。この投稿はトリックを示していますが、それを適用する方法については述べていません。私はこれを試しましたが、機能しません:

<iframe id="embeddedthing" width='500' height='300' frameborder='0' src='https://docs.google.com/spreadsheet/pub?key=<DocId>&single=true&gid=12&output=html&widget=false&gridlines=false'></iframe>
<script type="text/javascript">
  var f = function(id) {document.getElementById(id).style.display = "none";};
  f("header");
  f("footer");
</script>

次に、iframeに読み込まれたドキュメントに適用する必要があると考えたため、を使用してアクセスしようとしましdocument.getElementById('FrameId').contentWindow.documentたが、ブラウザに「安全でないJavaScriptがフレームにアクセスしようとしました」と表示され、続行できません。

そのJavaScript関数を実行する正しい方法は何ですか?

4

2 に答える 2

6

iframe 内の共有 Google シートからヘッダーとフッターを削除する最も簡単な方法は、表示するシートと範囲を指定することです。
次の構文を使用すると、上端と左端の薄い灰色の境界線を除いて、シートは見栄えがよくきれいに表示されます。

src="https://docs.google.com/spreadsheet/pub?key=<DocID>&gid=<SheetID>&gridlines=false&range=A1:Z100"

このパラメーターを指定しないと、ヘッダー行を一番上に表示したり、ヘッダー、フッター、および他のシートへのリンクを表示したりするためrangeに、動作が影響を受けます。実際のシート サイズよりも大きい 値を指定すると、シート全体が使用されます。したがって、小さなテーブルのほとんどの場合をカバーします。widget=truewidget=false
rangerange=A1:Z100

隣接する 2 つの iframe を作成すると、固定された列または行ヘッダーと同様のことができます。
この手法を使用して、左側にヘッダー、右側にスクロール可能な領域を持つ 2 つの固定列を表示するページの例を次に示します。

<table border='1'>
  <tr>
    <td>
      <iframe width="103" height="187" frameborder="0" src="https://docs.google.com/spreadsheet/pub?key=0AqEyi7du69LQdHRJXzViMlhEdHVYY2E4X1hnZ21EQ2c&gid=29&gridlines=false&range=A1:B999"></iframe>
    </td>
    <td>
      <iframe width="600" height="187" frameborder="0" src="https://docs.google.com/spreadsheet/pub?key=0AqEyi7du69LQdHRJXzViMlhEdHVYY2E4X1hnZ21EQ2c&gid=29&gridlines=false&range=C1:CC999"></iframe>
    </td>
  </tr>
</table>

この技術を使ったサイトです。

編集

Google が何かを変更したため、私のウェブサイトが突然壊れてしまいました。

ここで提案されている解決策は、追加すること&widget=false&chrome=falseです。

于 2013-02-03T20:00:20.510 に答える
0

JS はフレームへのアクセスを制限しているため、何らかの方法でスプレッドシートの HTML を取得し、ページ内からヘッダーとフッターを削除する必要があります。

非表示のiframe( display: none;) を使用してスプレッドシートを格納し、次に、このメソッド (jQuery が必要)iframeでスプレッドシートの HTML を取得するページをロードして、ヘッダーとフッターを削除することができます。これを行うには、HTML を取得して DOM 構造に解析し、f() コードを含む要素を追加してから、 URL を使用してページをプルアップします。scriptdata:

要素を使用して、baseファイルへのリンクを保持できます。スプレッドシートの元のパス (ただし、ファイル名ではない) をbase's (href存在する場合) の先頭に追加します。それ以外の場合は、 で新しいものを作成<base href="www.google.com/path/to/spreadsheet/without/filename/" />headます。iframehiddenの正規表現を使用してパスを取得できますsrc

少しぎこちないかもしれませんし、確かに改善を使用できます...しかし、(うまくいけば)うまくいきます!!

これはテストされておらず、研究に基づいていることに注意してください。

于 2013-01-17T03:13:57.977 に答える