Google apps script 如何设置文本格式,以便使用电子表格中的数据复制/粘贴到任何位置

Google apps script 如何设置文本格式,以便使用电子表格中的数据复制/粘贴到任何位置,google-apps-script,Google Apps Script,我在电子表格上有一个数据库程序,数据按经典顺序排列在行和列中,我正在使用的是一个UI,允许用户搜索数据库并显示结果,如下所示。“表格”显示了可滚动表格中的结果和接下来的15项,其中包含最重要的数据,底部有一个文本区域,该区域应包含所选项目,格式为我可以复制并粘贴到任何文档中,同时保持布局(新行、间距…)。注意:脚本还应检测表中哪一行具有焦点。 该文本区域应提供2种(目前)所谓的“格式”,一种用于屏幕截图中显示的字母,另一种用于两行(我称之为“原始数据”)上的所有字段(逗号或制表符分隔),用于任何

我在电子表格上有一个数据库程序,数据按经典顺序排列在行和列中,我正在使用的是一个UI,允许用户搜索数据库并显示结果,如下所示。“表格”显示了可滚动表格中的结果和接下来的15项,其中包含最重要的数据,底部有一个文本区域,该区域应包含所选项目,格式为我可以复制并粘贴到任何文档中,同时保持布局(新行、间距…)。注意:脚本还应检测表中哪一行具有焦点。 该文本区域应提供2种(目前)所谓的“格式”,一种用于屏幕截图中显示的字母,另一种用于两行(我称之为“原始数据”)上的所有字段(逗号或制表符分隔),用于任何其他用途(使用单选按钮进行选择)

我设法执行了搜索、表格填充和UI设计,但(这里最后是实际问题)我不确定如何在textarea中获取格式化文本。。。我应该使用HTML吗

下面是我现在使用的屏幕截图和UI代码,我想这张图片让事情变得更清楚了,至少我希望如此;-)

函数buildUi(){
var app=UiApp.createApplication().setTitle(“浏览器列表测试”)
.setHeight(340).setWidth(800).setStyleAttribute(“背景色”、“米色”).setStyleAttribute(“填充”、“20”);
var scroll=app.createScrollPanel().setPixelSize(750150)
var vpanel=app.createVerticalPanel();
var cell=新数组();
变量cellWidth=[45135150250,50100]
var row=新数组();

对于(vv=0;vv为什么不创建一个flextable来保存搜索结果。将其更改为所需格式(使用逗号)和通过ScriptProperties存储,您可以复制/粘贴。

您是否考虑过?并使用setHTML方法。

谢谢,但我想直接从UI复制粘贴-普通用户只会看到此UI。您正在迭代行(结果),而不是按照您希望的方式构建结果。如果您设置行项目(表中的行号与位置),您可以通过以下方式访问它们:app.getElementById(
11
).getValue==Mr.+','等等。上次我尝试RichTextArea时,我没有太多成功()但由于这次它将是“硬编码”的,我将在这里尝试并更新..谢谢,我们可以说它有效…至少它显示文本,我可以选择和复制/粘贴,但不幸的是HTML呈现不是很丰富…我不能更改tipeface,也不能添加这么多样式…无论如何,非常感谢Srik;-)抱歉,这似乎是一个浏览器问题,字体在Chrome和Firefox上不起作用,但在Safari上起作用……作为richTextArea本身的样式属性。
function buildUi() {
   var app = UiApp.createApplication().setTitle("BrowseList Test")
       .setHeight(340).setWidth(800).setStyleAttribute("background-color","beige").setStyleAttribute('padding','20');
    var scroll = app.createScrollPanel().setPixelSize(750,150)
    var vpanel = app.createVerticalPanel();
    var cell = new Array();
    var cellWidth = [45,135,150,250,50,100]
    var row = new Array();
    for(vv=0;vv<15;++vv){
      row[vv]=app.createHorizontalPanel();
      vpanel.add(row[vv]);
       for(hh=0;hh<cellWidth.length;++hh){
        cell[hh+(vv)*cellWidth.length]=app.createTextBox().setWidth(cellWidth[hh]+"");
        row[vv].add(cell[hh+(vv)*cellWidth.length])
        }
      }
app.add(scroll.add(vpanel))
// Initial populate
var data = ss.getDataRange().getValues();
    for(vv=0;vv<15;++vv){
       for(hh=0;hh<cellWidth.length;++hh){
         var rowpos=vv+1+offset
         var cellpos = hh+(vv)*cellWidth.length
        cell[cellpos].setValue(data[rowpos][hh])
        }
      }
  var grid = app.createGrid(2,9).setWidth('700')
  grid.setWidget(1, 0, app.createLabel('search'));
  grid.setWidget(1, 1, app.createTextBox().setName('search').setId('search'));
  grid.setWidget(1, 2, app.createRadioButton('mode','strict'));
  grid.setWidget(1, 3, app.createRadioButton('mode','global').setValue(true));
  grid.setWidget(1, 5, app.createLabel(' ').setWidth('100'));
  grid.setWidget(1, 6, app.createLabel('show mode'));
  grid.setWidget(1, 7, app.createRadioButton('show','letter').setValue(true));
  grid.setWidget(1, 8, app.createRadioButton('show','raw data'));
  app.add(grid);

  var result = app.createTextArea().setPixelSize(700,100)
  app.add(result)

ss.show(app);
 }