我是初级javascript / google-apps-script开发人员,我想在Google表格的某些工作表中添加一些功能。我正在处理许多网址,需要跟踪作者上次修改的时间。
我已经构建了一些我认为可行的脚本,但显然(经过一些阅读)需要一些专业的触摸。
想法是遍历一列URL(2500~)并将每个URL的修改日期(从其元数据)输出到右侧的单元格中。这是我的代码:
function iteration1() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
**//The list to iterate on.**
var sheet = ss.getSheetByName("Fund List");
**//The column of which the links are stored**
var urls = sheet.getRange("D2:D150").getValues();
for (var row = 0; row < urls.length; row++) {
for (var col = 0; col < urls[row].length; col++)
**//Varifying if there is a URL within the cell**
if (urls[row][col] != '') {
**//Storing each URL in a new array**
var url = UrlFetchApp.fetch(urls[row][col].valueOf());
**//Parsing the meta-data of the URL into an array**
var tweets = JSON.parse(url);
**//Retrieve the link modification date from the meta-data array & outputs to the cell from the right respectivley.**
sheet.getRange(row+2, 13).setValue(Logger.log(tweets[4][2]).getLog());
}
}
}
例如:链接http://documents.financialexpress.net/Literature/37773008.pdf
其元数据是:
{Accept-Ranges=bytes, X-Robots-Tag=noindex, nofollow, noarchive,nosnippet, Cache-Control=max-age=604800, Server=Microsoft-IIS/7.0, ETag="01827159b1d11:0", Access-Control-Allow-Origin=*, Access-Control-Allow-Methods=GET,PUT,POST,DELETE,OPTIONS, Last-Modified=Wed, 18 May 2016 23:00:00 GMT, Content-Length=113029, Access-Control-Allow-Headers=Content-Type, Date=Thu, 01 Sep 2016 11:43:52 GMT, Content-Type=application/pdf}
我只需要在此元数据数组中使用Last-Modified字段Date并将其从右侧输出到单元格。
预先感谢帮助者!这里很棒的社区!
答案 0 :(得分:0)
根据我在google文档(https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app#fetch(String))中看到的结果,您存储在变量 url 中的结果不是字符串。
JSON.parse接受一个字符串并将其转换为javascript Object / Array / String / whatever
您需要使用而不是JSON.parse(url),JSON.parse(url.getContentText(&#39; utf-8&#39;)),如下所示:https://developers.google.com/apps-script/reference/url-fetch/http-response
答案 1 :(得分:0)
经过几天的努力,我已经设法为我的工作表中的每个网址检索Last-Modified日期密钥的值。
我的代码:
function iteration1() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
//The Google sheet to access
var sheet = ss.getSheetByName("Sheet Name");
//The array of URLs to check
var urls = sheet.getRange("D2:D150").getDisplayValues();
for (var row = 0; row < urls.length; row++) {
for (var col = 0; col < urls[row].length; col++) {
if (urls[row][col].toString() != '') {
//Converting each URL to string and retrieving its Properties into a new Array
var url = UrlFetchApp.fetch(urls[row][col].toString());
var tweets = url.getAllHeaders();
//Forming an array of Properties by Keys & Values
var userProperties = PropertiesService.getUserProperties();
userProperties.setProperties(tweets);
var tweetsKeys = Object.keys(tweets);
}
}
//Retrieving the link modification date from the property meta-data & outputs it as a String to the cell from the right respectivley.
sheet.getRange(row+2, 12).setValue(userProperties.getProperty(tweetsKeys[7]));
}
}
非常感谢您的回复!