我正在使用Google Apps脚本从工作表中的Feed中提取内容。
这是我正在使用的代码:
function processXML(FeedURL,sheetsFileDestinationURL,rawPasteSheetName,OPT_childNamesArray,OPT_Namespace){
var OPT_childNamesArray = ["link"]; // get only item url from the feed
var GoogleSheetsFile = Spreadsheetapp.openByUrl(sheetsFileDestinationURL);
var GoogleSheetsPastePage = GoogleSheetsFile.getSheetByName(rawPasteSheetName);
if (OPT_childNamesArray){
GoogleSheetsPastePage.getDataRange().offset(1,0).clearContent(); // get all filled cells,omitting the header row,and clear content
}
else {
GoogleSheetsPastePage.getDataRange().offset(0,INCLUDING the header row,and clear content
}
// Generate 2d/md array / rows export based on requested columns and feed
var exportRows = []; // hold all the rows that are generated to be pasted into the sheet
var XMLFeedURL = FeedURL;
var feedContent = UrlFetchApp.fetch(XMLFeedURL).getcontentText(); // get the full feed content
var feedItems = XmlService.parse(feedContent).getRootElement().getchild('channel').getchildren('item'); // get all items in the feed
for (var x=0; x<feedItems.length; x++){
// Iterate through items in the XML/RSS feed
var currentFeedItem = feedItems[x];
var singleItemArray = []; // use to hold all the values for this single item/row
// Parse for specific children (requires names and namespace)
if (OPT_childNamesArray){
for (var y=0; y<OPT_childNamesArray.length; y++){
// Iterate through requested children by name and fill rows
var currentChildName = OPT_childNamesArray[y];
if (OPT_Namespace){
if (currentFeedItem.getchild(OPT_childNamesArray[y],OPT_Namespace)){
singleItemArray.push(currentFeedItem.getchildText(OPT_childNamesArray[y],OPT_Namespace));
}
else {
singleItemArray.push("null");
}
}
else {
if (currentFeedItem.getchild(OPT_childNamesArray[y])){
singleItemArray.push(currentFeedItem.getchildText(OPT_childNamesArray[y]));
}
else {
singleItemArray.push("null");
}
}
}
exportRows.push(singleItemArray);
}
// Parse for ALL children,does not require knowing names or namespace
else if (!OPT_childNamesArray){
var allChildren = currentFeedItem.getchildren();
if (x == 0){
// if looking at first item,create a header row first with column headings
var headerRow = [];
for (var h=0; h<allChildren.length; h++){
headerRow.push(allChildren[h].getName());
}
exportRows.push(headerRow);
}
for (var c=0; c<allChildren.length; c++){
singleItemArray.push(allChildren[c].getText());
}
exportRows.push(singleItemArray);
}
}
// Paste the generated md array export into the spreadsheet
if (OPT_childNamesArray){
GoogleSheetsPastePage.getRange(2,1,exportRows.length,exportRows[1].length).setvalues(exportRows);
}
else if (!OPT_childNamesArray){
var maxRangeLength = 0;
var currentRowIndex = 1;
for (var x = 0; x<exportRows.length; x++){
if (exportRows[x].length > maxRangeLength){
maxRangeLength = exportRows[x].length;
}
GoogleSheetsPastePage.getRange(currentRowIndex,exportRows[x].length).setvalues([exportRows[x]]);
currentRowIndex++;
}
}
}
我的问题是这样
运行此代码时,我得到:
我需要删除“ 115-396 /” 。
所以我尝试添加此代码,但是没有用:
...
// Paste the generated md array export into the spreadsheet
if (OPT_childNamesArray){
for (var k = 0; k < exportRows.length; k++) {
var re = '115-396/'
var replacingItem = '';
var URL = exportRows[0].toString().replace(re,replacingItem);
}
GoogleSheetsPastePage.getRange(2,exportRows[1].length).setvalue(URL);
}
else if (!OPT_childNamesArray){
...
在@Yuri回复后编辑:
// Paste the generated md array export into the spreadsheet
if (OPT_childNamesArray){
for ( k=0; k < exportRows[0].length; k++) {
var re = '115-396/'
var replacingItem = '';
exportRows[0][k] = exportRows[0][k].toString().replace(re,replacingItem);
}
GoogleSheetsPastePage.getRange(2,exportRows[1].length).setvalues(exportRows);
}
结果:
https://url/
https://url/115-396/
https://url/115-396/
基本上,正则表达式仅应用于第一个网址。
如何使正则表达式适用于所有网址?
有帮助吗? 谢谢