如何从 Google 电子表格中的 Google Apps 脚本自动更新“站点地图”功能?

Posted

技术标签:

【中文标题】如何从 Google 电子表格中的 Google Apps 脚本自动更新“站点地图”功能?【英文标题】:How to automatically update 'sitemap' function from Google Apps Script in Google Spreadsheet? 【发布时间】:2019-06-07 08:11:59 【问题描述】:

我对 Google Apps 脚本很陌生。我正在使用一个脚本,将 XML 站点地图中的 URL 提取到 Google 电子表格中。我需要它是基于时间的,以便在添加新 URL 时将其拉入。

我已经通过项目触发器向我的代码添加了一个触发器。触发器似乎已运行,但电子表格未使用新 URL 进行更新。

我正在使用以下代码

function sitemap(sitemapUrl,namespace) 
 try 
    var xml = UrlFetchApp.fetch(sitemapUrl).getContentText();
    var document = XmlService.parse(xml);
    var root = document.getRootElement()
    var sitemapNameSpace = XmlService.getNamespace(namespace);

    var urls = root.getChildren('url', sitemapNameSpace)
    var locs = []

    for (var i=0;i <urls.length;i++) 
      locs.push(urls[i].getChild('loc', sitemapNameSpace).getText()) 
    

    return locs  
   catch (e) 
    return e 
    

脚本工作正常,但问题是它没有根据我创建的触发器更新信息。有人对如何解决这个问题有建议吗?

【问题讨论】:

...你忘记setValues()了吗? 【参考方案1】:

该函数没有更新电子表格,因为没有任何语句可以这样做。

有几种方法可以做到这一点,但很有可能,假设locs 是一个二维数组对象,您应该使用range.setValues(locs),其中range 是目标范围。

请阅读https://developers.google.com/apps-script/guides/sheets 了解更多详细信息,或搜索此站点以了解有关将值传递到工作表的问题(有很多)。

【讨论】:

嗨@Rubén,感谢您的回复。您能否澄清一下我将如何在我的脚本中使用 range.setValues(locs) ?我已经阅读了文档,所以我知道它为什么不起作用。我也阅读了很多关于使用 range.setValues 的帖子,但我似乎无法让它在我的情况下工作。非常感谢您的帮助。我最近才开始使用 Google Apps 脚本。

以上是关于如何从 Google 电子表格中的 Google Apps 脚本自动更新“站点地图”功能?的主要内容,如果未能解决你的问题,请参考以下文章

google docs电子表格导出:如何从时间、日期中删除撇号[关闭]

从Google电子表格中解析格式化文本

如何将宏应用于 Google 表格中一个电子表格中的所有表格

ImportHTML 的 Google 电子表格中的解析错误

如何保护 Google 电子表格中的 Apps 脚本代码?

如何从Google表格电子表格中删除绑定脚本?