【问题标题】:How to get selected table in Google apps script如何在 Google Apps 脚本中获取选定的表
【发布时间】:2019-02-08 14:37:18
【问题描述】:

我正在编写一个脚本,该脚本将使用用户选择的表。但是,使用 DocumentApp.getActiveDocument().getSelection().getRangeElements() 将仅获得单个单元格。我以为我可以重建表格,但是单元格都在一个长列表中,没有关于行或列的信息,用户应该能够选择任何高度/宽度的表格,而无需告诉程序尺寸是多少是。我还考虑过让程序自动选择提前一点,以便将表格视为表格而不是单个单元格,但这仍然会选择单个单元格(但不是所有的单元格,这有点奇怪。)感谢您的任何反馈/帮助!

【问题讨论】:

  • 我现在意识到我可以只获取其中一个单元格的父级的父级来获取表格。
  • 请不要编辑您的问题以反映其解决方案。 Stack Overflow 是一个问答网站,而不是论坛。如果您有答案,请在下面发布满足我们标准的完整答案,并访问how to answer 以详细查看这些标准。我们接受self answered questions

标签: javascript google-apps-script


【解决方案1】:

替换通过将光标放在任何单元格中选择的表格

我刚刚为要替换的表创建了一个二维数组。

如果您尝试将第一个元素转换为 asTable(),您将收到错误 'PARAGRAPH can't be cast to TABLE.' 然后如果添加另一个 getParent(),您将收到错误 'TABLE_CELL 无法转换为 TABLE。 ' 然后添加另一个 getParent() ,你会得到错误 'TABLE_ROW can't be cast to TABLE.' 最后再添加一个 getParent() 最终通过挑战并更换桌子。您可以将光标放在表格中的任何单元格中。这有点骇人听闻,但最终似乎奏效了。如果不知道如何使用 Google 提供的调试资源,要弄清楚这一点会困难得多。

function replaceTableAtCursor(){
  var doc=DocumentApp.getActiveDocument();
  var body=doc.getBody();
  var el=doc.getCursor().getElement().getParent().getParent().getParent();//element/cell/row/table
  var table=el.asTable();
  var t=[];//This is the table I used. Any 2D array will work like the ones you can get from getValues() method from spreadsheets.
  for(var i=0;i<3;i++){
    t[i]=[];
    for(var j=0;j<3;j++){
      t[i][j]=Utilities.formatString('i:%s,j:%s',i,j);
    }
  }
  var childIndex=body.getChildIndex(el)
  table.clear();
  body.insertTable(childIndex,t)  
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-19
    • 2017-08-06
    • 2014-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多