有没有办法打破标签文字?因为'\ n''\ r''\ n \ r''不起作用。 非常感谢
答案 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输出。
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.