Google apps script 更改Google文档中的链接表源
谢谢你对我的帮助 我使用一个脚本自动将内容从电子表格推送到文档中,作为一种超级邮件合并。更改文档中的文本没有问题,但要使文档中的表正常工作却变得更加困难 文档中的每个表都链接到电子表格。在运气有限的情况下,我尝试做以下任何一项: 将文档上的源表从一个电子表格更改为另一个电子表格,然后更新所有值。 更新文档上的所有源表,然后取消与源的链接。 直接将范围从电子表格复制到文档。 到目前为止我一点运气都没有。下面的代码就是我要做的。getLinkUrl属性为文档中找到的每个表返回null。任何指点都将不胜感激Google apps script 更改Google文档中的链接表源,google-apps-script,google-sheets,google-docs,Google Apps Script,Google Sheets,Google Docs,谢谢你对我的帮助 我使用一个脚本自动将内容从电子表格推送到文档中,作为一种超级邮件合并。更改文档中的文本没有问题,但要使文档中的表正常工作却变得更加困难 文档中的每个表都链接到电子表格。在运气有限的情况下,我尝试做以下任何一项: 将文档上的源表从一个电子表格更改为另一个电子表格,然后更新所有值。 更新文档上的所有源表,然后取消与源的链接。 直接将范围从电子表格复制到文档。 到目前为止我一点运气都没有。下面的代码就是我要做的。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());
}
}
设置表的链接URL并不意味着任何自动数据更新。这只是指向其他资源的超链接,仅此而已。如果以前没有使用Table.setLinkUrl方法显式设置链接,那么每次调用Table.getLinkUrl都会得到null 下面是至少有一个表的文档的示例代码,其中该方法返回一个字符串值,而不是null
你试过实现空值检查吗?@jess,谢谢你的建议,但是检查空值不是问题。使用getLinkUrl for tables不会返回表的链接URL,它会返回已分配给该表的任何超链接。谢谢,我理解在这种情况下,getLinkUrl for tables不是正确的方法。我想知道是否有一种方法可以获取或设置表链接。上面的代码只是将表中所有单元格的文本链接到stackoverflow.com。这不是OP提出的问题。我很乐意为这个问题提出一个简单而全面的解决方案,但如果没有呢?要获得完整的解决方案,需要对细节进行彻底的研究,并编写大量代码。也许整个图书馆。。。如果可能的话,给出你的答案。
function getLinkUrl() {
var doc = DocumentApp.getActiveDocument();
var tables = doc.getBody().getTables();
tables[0].setLinkUrl('https://stackoverflow.com');
Logger.log(tables[0].getLinkUrl());
}