使用文档 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
分割时
我正在尝试 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
分割时