2013-10-08 102 views
1

我刚刚接触SO(尽管不是SE媒体),所以尽管我已经搜索了一个答案(使用网站的搜索功能和Google),但有机会之前被问及回答;如果是这样,预先感谢标记为重复(前提是我可以自然地在原始中找到一些帮助)。在我的脚本中使用Google文档(电子表格)

我想为我的个人用途撰写一个脚本来聚合和过滤RSS提要。我已经处理了RSS角(很大程度上归功于this Programmer's Library entry),但我陷入困境的一点是我希望通过使过滤器模块化,使其查找包含在我的Google云端硬盘上的电子表格文件中的短语。这样,如果我需要修改/添加过滤条件,我可以简单地编辑驱动器上的文件,而不必进入我的脚本代码。

因此,我一直在浏览类File,Spreadsheet,SpreadsheetApp,ScriptDb以及这个Developer's article的API,但是我无法理解它(并且我感觉我可能不是看在正确的地方)。用最基本的术语来说,我需要做的是从我的云端硬盘上的电子表格文件中加载(也许保存)一个数组(可能是Object [] [])。然后我可以很容易地过滤所述数组的条目。另一件我感兴趣的事情是保留一些统计数字,说明每个术语被用作有效过滤器的数量,这是将修改后的阵列保存到我的Drive中会派上用场的地方。最后,我应该提到我在拼贴中使用了一些Java,但作为一门数学专业,我从来没有用过它,我很喜欢使用类似事物的例子,并根据需要做出调整,但可能不会比这更多(尽管我非常乐意学习,如果事情以非专业程序员的方式解释理解)。我会很感激你可以给我的任何帮助(把我指向正确的地方,让我的答案会超级),但请记住,如果事情过于技术化,我的头可能会爆炸。

非常感谢。

+0

我喜欢你的剧本非常多,但的想法,说实话我有点惊讶,你没有找到一种方法来读取和写入电子表格的内容,因为这实际上是一个非常基本的操作。如果您显示(例如)RSS过滤器部分代码和您想象的电子表格展示方式,我想可以提出更准确的建议。就我而言,我会有一个包含| filters字符串| nr的页面|在连续的行中,第二页与您正在监控的rss feed的web地址相关联。这是否足够或您有其他想法? –

+0

@Sergeinsas这就是我计划构建电子表格的方式。然而,尽管基本可能,但我无法找到如何去做。让我们简单介绍一下重要的内容:假设名为“RSS Filter”的电子表格位于我的云端硬盘的根目录中,并假设它有两个工作表:“过滤器”和“来源”。我如何声明一个数组并在'filters'中用给定范围的内容填充它,说?或者更好的是,在旅途中声明范围,仅包含在参与表中使用的那些单元格? –

回答

1

这里是你的标准的例子:

function getArrayFromSheet(sheetName) { 
    var ss = SpreadsheetApp.openById('0AnqSFd3iikE3dF9hb3RUeHBqNUt2NGdkRlUycVZQN0E');// edit this id to suit your spreadsheet 
    var sh = ss.getSheetByName(sheetName); 
    var lastRow = sh.getLastRow(); 
    var lastCol = sh.getLastColumn(); 
    var data = sh.getRange(2,1,lastRow,lastCol).getValues();// starting from row nr 2 to skip headers if present (otherwhise start from 1) 
    // data is an array of arrays [[row1],[row2],[row3],[...]] 0 indexed, each row inside the array is an array of the cell values 
    return data 
} 

// usage : 

function testFunction(){ 
    var firstRowOfData = getArrayFromSheet('filters')[0]; 
    Logger.log(firstRowOfData) 
} 

这里是一个testSpreadsheet to start with(请复制到运行的代码)

+0

'SpreadsheetApp.openById()'正是我所需要的;非常感谢你。我一直都在那个班,所以我想我唯一的借口是它的措辞不是非常友善的。 –

相关问题