在长标签文本中断行

时间:2012-06-21 19:46:34

标签: label google-apps-script

有没有办法打破标签文字?因为'\ n''\ r''\ n \ r''不起作用。 非常感谢

4 个答案:

答案 0 :(得分:2)

如果你使用那些2 parameters你做你想做的事,不是吗?

app.createLabel(text).setWidth(width).setWordWrap(true)

这是一个例子(在其他小部件中; - ):

function showurl() {
  var app = UiApp.createApplication();
  app.setTitle("Anchor in a popup ;-)");
  var panel = app.createFlowPanel()
  var image = app.createImage('https://sites.google.com/site/appsscriptexperiments/home/photo.jpg').setPixelSize(50, 50)
  var link = app.createAnchor('This is your link', 'https://sites.google.com/site/appsscriptexperiments/home');
  var lab = app.createLabel("wrap it because it's too narrow").setWidth(90).setWordWrap(true);
  var quit = app.createButton('quit');
  panel.add(image).add(link).add(lab).add(quit);
  app.add(panel);
   var doc = SpreadsheetApp.getActive();
  doc.show(app);
}
编辑:我找到了一个old post(在谷歌小组论坛上,再次感谢Henrique ;-)关于在吐司消息中打破行,这里是我用于该案例的代码......原则应该适用于标签也是,但我没试过。 要使用它,只需在包含文本的变量中使用\ n(您要在其中断行的位置)并将其传递给此函数。 (脚本中有一些注释要解释)

function break_(msg){
var temp = escape(msg);// shows codes of all chars
msg = unescape(temp.replace(/%20/g,"%A0")); // replace spaces by non break spaces
temp = msg.replace("\n"," "); // and replace the 'newline' by a normal space
  return temp; // send back the result
    }

答案 1 :(得分:1)

这样的事情会起作用吗?

//takes a line of text and returns a flex table broken by \n

function breakLabel(text) {
  var app = UiApp.getActiveApplication();
  var flexTable = app.createFlexTable();

  text = text.split('\n'); // split into an array 

  for (var i=0; i<text.length; i++){
    flexTable.setWidget(i, 0, app.createLabel(text[i].toString()));
  }

  return flexTable;

}

答案 2 :(得分:1)

将它们添加到垂直面板也有帮助(不是你想要的方式,但仍然......):

var vPanel = app.createVerticalPanel().setSize(100,100);
var label = app.createLabel('predominantly blabla blala blabla');
app.add(vPanel.add(label));

请参阅reference

答案 3 :(得分:0)

对于刚刚遇到此问题的人来说,最好的解决方案似乎是为需要换行的任何内容创建HTML输出。

Documentation

 var htmlApp = HtmlService
     .createHtmlOutput('<p>A change of speed, a change of style...</p>')
     .setSandboxMode(HtmlService.SandboxMode.IFRAME)
     .setTitle('My HtmlService Application')
     .setWidth(250)
     .setHeight(300);

 SpreadsheetApp.getActiveSpreadsheet().show(htmlApp);

 // The script resumes execution immediately after showing the dialog.