Google apps script 嵌入谷歌网站的谷歌应用程序脚本中的换行符?

Google apps script 嵌入谷歌网站的谷歌应用程序脚本中的换行符?,google-apps-script,newline,saml,Google Apps Script,Newline,Saml,我是个新手,所以可能有一些明显的东西我遗漏了 这段代码嵌入在我公司使用的谷歌网站中 基本上,我所做的是创建一个文本框,在SAML响应中,我单击按钮,它进行URL解码,然后base64解码字符串。这很有效(令人惊讶)。但输出只是XML的一长行。例如,为了在python中克服这个问题,我刚刚替换了“>\n我认为标签不允许任何创建新行的内容。您尝试了.createHTML,它允许基本标记。尝试使用带有标记的HTML 我没有试过,所以我不知道它是否有效 除此之外,我认为您需要拆分内容,并添加第二个标签

我是个新手,所以可能有一些明显的东西我遗漏了

这段代码嵌入在我公司使用的谷歌网站中


基本上,我所做的是创建一个文本框,在SAML响应中,我单击按钮,它进行URL解码,然后base64解码字符串。这很有效(令人惊讶)。但输出只是XML的一长行。例如,为了在python中克服这个问题,我刚刚替换了“>\n我认为标签不允许任何创建新行的内容。您尝试了
.createHTML
,它允许基本标记。尝试使用带有

标记的HTML

我没有试过,所以我不知道它是否有效


除此之外,我认为您需要拆分内容,并添加第二个标签。

我找到了答案。我最终使用了.createHTML,然后替换了所有的““另一个角色。这一切都是因为XML和谷歌网站剥离了他们不喜欢的东西。不过,我很想听听其他解决方案,因为这是一个相当混乱的解决方案。

您好。我确实试过了。这是注释掉的行之一。然后,它的格式不同,输出到处倾斜。它似乎在某种程度上曲解了XML(或者可能是谷歌网站删除了它?),只显示了部分文本。添加第二个标签是什么意思?您正在创建一个ID为“SAMLout”的标签,然后设置该标签的文本,对吗?然后将整个内容放入标签中,并尝试使用新行将其格式化。我想说的是,为新行上需要的文本的每一部分创建一个新变量,然后为每一行创建一个标签,并为该行设置文本。
function doGet(e) {
  var myapp = UiApp.createApplication().setTitle('CAML Response Decoder');
  var testText = "Decoded Response Will Appear Here...";
  var mygrid = myapp.createGrid(2, 2);
  mygrid.setText(0, 0, 'SAML Response: ');
  mygrid.setWidget(0, 1, myapp.createTextBox().setName("SAMLin"));
  mygrid.setText(1, 0, 'Decoded: ');
//  mygrid.setWidget(1, 1, myapp.createTextBox().setName("SAMLout"));
  mygrid.setWidget(1, 1, myapp.createLabel(testText).setWordWrap(true).setId("SAMLout"));
//  mygrid.setWidget(1, 1, myapp.createHTML(testText).setId("SAMLout").setWordWrap(true).setWidth(50));
  var mybutton = myapp.createButton('Decode');
//  var mypanel = myapp.createVerticalPanel().setSize(800,500);
  var mypanel = myapp.createHorizontalPanel();
  mypanel.add(mygrid);
  mypanel.add(mybutton);
  myapp.add(mypanel);

  var handler = myapp.createServerHandler('myClickHandler');
  mybutton.addClickHandler(handler);
  handler.addCallbackElement(mygrid);
  return myapp;
}

function myClickHandler(e) {
  var app = UiApp.getActiveApplication();
  var textValue = e.parameter.SAMLin;
  var strURIDecoded = textValue.replace(/%2D/g, "-").replace(/%5F/g, "_").replace(/%2E/g, ".").replace(/%21/g, "!").replace(/%7E/g, "~").replace(/%2A/g, "*").replace(/%27/g, "'").replace(/%28/g, "(").replace(/%29/g, ")").replace(/%3Cbr%20%2F%3E/g, "%0D" ).replace(/%0A/g, "%0D" ).replace(/%250D/g, "%0D").replace(/%5Cr%5Cn/g, "%0D").replace(/%2B/g, "+").replace(/%5Cn/g, "%0D").replace(/%5Cr/g, "%0D").replace(/%3D/g, "=");
  var strB64Decoded = Utilities.base64Decode(strURIDecoded);
  var Assertion = Utilities.newBlob(strB64Decoded).getDataAsString();
  var AllDone = Assertion.replace(/></g, ">\n<");
//  var AllDone = ("<div>" + AllDone2 + "</div>");

//  var document = XmlService.parse(Assertion);
//  var AllDone = XmlService.getCompactFormat()
//     .setLineSeparator('\n')
//     .setEncoding('UTF-8')
//     .setIndent('   ')
//     .format(document);

  app.getElementById('SAMLout').setText(AllDone)  
  app.close();
  return app;
}