Google Script:从 gsheet 脚本返回文本

cam*_*cam 1 google-apps-script

我有一个包含脚本的 Google Sheet。该脚本创建了一些文本,应该是:

  • 复制到剪贴板或
  • 在 Web 浏览器中显示(然后我将手动将其复制到剪贴板)或
  • 保存到硬盘驱动器上的特定文件(然后我将打开文件并将文本复制到剪贴板)

我当前的解决方案,创建一个带有文本的新 gdoc 文件(并在每次脚本运行时打开它并将文本复制到剪贴板)相当慢,并且创建了大量需要稍后删除的文档。

我试图return ContentService.createPlainTextOutput(txt);在 gsheet 脚本中编写,但这会导致错误“TypeError:在对象 ContentService 中找不到函数 createPlainTextOutput”。

Ser*_*sas 5

我(个人)发现另一个更易于使用的解决方案:

创建一个弹出窗口,其中包含您可以复制和粘贴到任何地方的文本。您可以使用 html 格式的输出或纯文本,具体取决于您的需要/偏好。

电子表格中的简单代码如下所示:

function myFunction() {
  var ui = SpreadsheetApp.getUi();
  var app = UiApp.createApplication().setWidth(400).setHeight(600);
  var html = app.createHTML();
  var sh = SpreadsheetApp.getActiveSheet();
  var data = sh.getActiveRange().getValues();
  var string = '<b>Copy and paste the text below<br><br></b>';
  for(var n in data){
    string += data[n].join(' - ')+'<br>';
  }
  html.setHTML(string);
  app.add(html);
  ui.showModelessDialog(app,'toClipboard...');
}
Run Code Online (Sandbox Code Playgroud)

从菜单、按钮调用它,甚至调整它以适应侧边栏......

在此处输入图片说明


编辑 :

刚刚在评论中看到您的文本可能(非常)长,我认为添加滚动面板可能是可取的...代码如下:

function myFunction() {
  var ui = SpreadsheetApp.getUi();
  var app = UiApp.createApplication().setWidth(400).setHeight(600);
  var html = app.createHTML();
  var scroll = app.createScrollPanel(html).setPixelSize(400,600);
  var sh = SpreadsheetApp.getActiveSheet();
  var data = sh.getActiveRange().getValues();
  var string = '<b>Copy and paste the text below<br><br></b>';
  for(var n in data){
    string += data[n].join(' - ')+'<br>';
  }
  html.setHTML(string);
  app.add(scroll);
  ui.showModelessDialog(app,'toClipboard...');
}
Run Code Online (Sandbox Code Playgroud)