使用文档 header 中的文本作为 link 到应用程序脚本中的电子表格

Using text in header of document as link to spreadsheet in apps script

我正在尝试 link 将电子表格转换为文档。我已将电子表格的 ID 放在文档的 header 中 - (getChild(3) 因为我使用的是 'different first page header')。在日志中我得到了正确的 id 值,但是脚本 return "An unexpected error" for openById...

function spreadSheet(){
  var docFile = DocumentApp.getActiveDocument();
  var header = docFile.getHeader();
  var id = header.getParent().getChild(3).asHeaderSection().getText();
  //var id = header.getParent().getChild(3).asText().getText()
  //var id = '1cYX1uXHQdB0ee67YWLanB_ESTgGkG9NRJIQ34arIH2c'


  Logger.log(id)

  var ss = SpreadsheetApp.openById(id);
  var s = ss.getSheetByName('Data');
  var hej = s.getRange('A1').getValue();

正如您在代码中看到的那样,我已经尝试了一些不同的东西。在最后一个示例中用文本字符串替换 id 时,它按预期工作。但我不想在文档中而不是在代码中定义 id。

Link to the document Link to simpel template spreadsheet

我认为 id 将是 header 文本中最长的单词,所以我猜这会起作用。

function getSSIDFromHeader(){
  var docFile = DocumentApp.getActiveDocument();
  var header = docFile.getHeader();
  var text=header.getText().split(/(\n| |\r)/);//splitting on cr linefeed or space
  DocumentApp.getUi().showModelessDialog(HtmlService.createHtmlOutput(text.reduce(function(a,s,i){if(s.length>a.max.length){a.max=s;}return a;},{max:''}).max),"Test");
}

我在我的文档 header 上测试了这个并且它有效。我怀疑它可能在你身上,因为我猜它会是 header 中最长的字符串,当被 \r 或 \n 或 space

分割时