1

Google サイトや他の Web サイトに埋め込むための GAS コード サンプルを準備しようとしています。HtmlService.createHtmlOutput と HtmlService.createTemplateFromFile() と template.evaluate().getContent() を使用して、Google Apps スクリプトのコンテンツの HTML バージョンを提供します。この投稿に従って、すべて正常に機能します。

ここで、prettyify.js を使用してコードを整形したいと思います。Cajaに埋め込まれたバージョンを使用していますが、ほとんど機能します。ただし、整形されているコード内の特定のメソッド名は、htmlservice からエラーをスローします。

ゲスト構築オブジェクト オブジェクトのアンテイムはサポートされていません。文字列ではなく関数を期待: pln

具体的には、このテキストは正常に装飾されています。

function xisItHtml (e) {
  return ( e.parameter.hasOwnPropertu('template')) ;
}

一方、これはエラーをスローします

function xisItHtml (e) {
  return ( e.parameter.hasOwnProperty('template')) ;
}

特定のメソッド (このコードは実行されていないため奇妙で、飾り立てられているだけです) が原因で、caja sanitation が不平を言うようです。

テンプレートのコードはこれだけです

$(document).ready(function () {
 // any jQueryness can happen here...
  try { 
    prettyPrint();
  }
  catch(err) {
    alert("failed prettification " + err);
  }
});

私はかなり困惑しています。何か案は?

4

2 に答える 2

1

したがって、.toString() または .hasOwnProperty() を含む整形済みのテキストを GAS の htmloutput に挿入すると、エラーが発生するようです。問題を引き起こした他のテキストは見つかりませんでしたが、他にもあるかもしれません。私のハックは、装飾の前にテキストを変更し、後で元に戻すことでした。

$(document).ready(function () {
   // any jQueryness can happen here...
    var thingsThatScrewUp = [ 'toString', 'hasOwnProperty'],t;

    $('.pretty').each( function(i,elem) {
       var c = $(elem).text() ;
       // disguise
       for (var i = 0 ; i < thingsThatScrewUp.length ; i++ ) {
        c = c.replace(new RegExp("." + thingsThatScrewUp[i], 'g'),".sandw_" + i + "_ch");
       }
       try {
         t = prettyPrintOne(c);
       }
       catch (err) {
        $('#report').html(err + c);
       }
       // undisguise
       for (var i = 0 ; i < thingsThatScrewUp.length ; i++ ) {
         t = t.replace(new RegExp("sandw_" + i + "_ch", 'g'),thingsThatScrewUp[i]);
       }
       $(elem).html("<pre class='code pretty prettyprint'>" + t + "</pre>");
      });
      $('#working').html('Module:');
  });

ここに 作業バージョンがあります

于 2012-11-07T19:29:22.647 に答える
0

それはあなたがプリティファイアーを呼んでいる方法かもしれません。Caja Playground で正しくレンダリングされているように見える例を次に示します

于 2012-11-07T12:35:27.173 に答える