感谢我对此提供的任何帮助。
我正在使用脚本自动将电子表格中的内容推送到文档,作为一种超级邮件合并。更改文档中的文本没问题,但是事实证明,要使文档中的表正常运行,会更加困难。
文档中的每个表都链接到电子表格。在运气有限的情况下,我正在尝试执行以下任一操作:
到目前为止我还没有运气。下面的代码是我要做的。 getLinkUrl()
属性为文档中找到的每个表返回null。任何指针将不胜感激。
function updateTables(documentID,spreadsheetID){
var ui = SpreadsheetApp.getUi();
//Check if input was passed
if(documentID === undefined){
var documentURL = ui.prompt('Table Update Module','Please enter the url of the document you wish to update tables on.', ui.ButtonSet.OK_CANCEL);
//Check for cancel
if(documentURL.getSelectedButton() == ui.Button.OK){
documentID = getIdFromUrl(documentURL.getResponseText());
}else{
Logger.log('Exit when asked for document URL.');
return;}
}
Logger.log('Replacement document ID: ' + documentID);
//Check if input was passed
if(spreadsheetID === undefined){
var spreadsheetURL = ui.prompt('Table Update Module','Please enter the url of the spreadsheet you wish to get the tables from.', ui.ButtonSet.OK_CANCEL);
//Check for cancel
if(spreadsheetURL.getSelectedButton() == ui.Button.OK){
spreadsheetID = getIdFromUrl(spreadsheetURL.getResponseText());
}else{
Logger.log('Exit when asked for spreadsheet URL.');
return;}
}
Logger.log('Replacement spreadsheet ID: ' + spreadsheetID);
//Get tables
var documentTables = DocumentApp.openById(documentID).getBody().getTables();
//Loop through tables
for(var i = 0; i < documentTables.length; ++i){
Logger.log('Table URL: ' + documentTables[i].getLinkUrl());
}
}
答案 0 :(得分:0)
设置表的链接URL并不意味着任何自动数据更新。这只是到其他资源的超链接,仅此而已。如果您之前未使用Table.setLinkUrl()
方法显式设置链接,则每次调用Table.getLinkUrl()
都会得到 null 。
下面是具有至少1个表的文档的示例代码,其中该方法返回字符串值,而不是 null 。
function getLinkUrl() {
var doc = DocumentApp.getActiveDocument();
var tables = doc.getBody().getTables();
tables[0].setLinkUrl('https://stackoverflow.com');
Logger.log(tables[0].getLinkUrl());
}