1

Я новичок в SO (хотя и не для среды SE), поэтому, хотя я искал ответ (используя функцию поиска на сайте и Google), есть шанс, что это спрашивали и отвечали раньше; если это так, заблаговременно за возможность отмечать как дубликат (при условии, что я могу найти определенную помощь в оригинале, естественно).Использовать документ Google (электронная таблица) в моем сценарии

Я пытаюсь составить сценарий для личного использования, который будет агрегировать и фильтровать RSS-каналы. У меня обработано угловое окно RSS (во многом спасибо this Programmer's Library entry), но точка, в которой я застреваю, заключается в том, что я хочу сделать модульный фильтр, заставив его искать фразы, содержащиеся в файле электронной таблицы на моем Google Диске. Таким образом, если мне когда-либо понадобится изменить/добавить условия фильтрации, я могу просто отредактировать файл на своем Диске вместо того, чтобы входить в код моего скрипта.

Итак, я просматривал API-интерфейсы для классов File, Spreadsheet, SpreadsheetApp, ScriptDb, а также этот Developer's article, но я просто не могу обойти его (и у меня возникает ощущение, что я не могу быть глядя в нужное место). Что я должен делать, в самых основных терминах, это загрузка (и, возможно, сохранение) массива (это может быть Object [] [] для всех, что касается меня) от (до) файла электронной таблицы на моем Диске. Тогда я мог бы легко фильтровать записи из указанного массива. Еще одна вещь, которая мне интересна, - это сохранить некоторые статистические данные о том, сколько каждый термин использовался в качестве активного фильтра, в котором было бы полезно сохранить измененный массив на моем Диске.

В заключение я должен упомянуть, что я взял некоторую Java в коллаже, но в качестве математики я никогда не был с ней справлен; Мне удобно использовать примеры подобных вещей и вносить коррективы, чтобы делать то, что мне нужно, но, вероятно, не намного больше (хотя я более чем готов учиться, если все объясняется таким образом, что непрофессиональный программист может Понимаю). Я буду признателен за любую помощь, которую вы могли бы мне дать (обращаясь к правильному месту, где мои ответы будут супер), но, пожалуйста, имейте в виду, что моя голова может взорваться, если что-то станет слишком техническим.

Большое спасибо.

+0

Мне нравится идея вашего сценария очень много, но если честно я немного удивил, что вы не нашли способ читать и писать содержимое электронной таблицы, так как это действительно очень простая операция. Думаю, можно было бы предложить более точный совет, если вы покажете (например) часть фильтра RSS вашего кода и то, как вы представляете презентацию своей таблицы. Насколько мне известно, у меня была бы страница с | фильтрами string | nr возникновения | в последовательных строках и второй странице с веб-адресом rss-канала, который вы контролируете. Было бы достаточно или у вас были другие идеи? –

+0

@Sergeinsas, именно так я и планировал построить свою таблицу. Однако, как бы то ни было, я не могу найти, как это сделать. Давайте перейдем к части, которая имеет значение: предположим, что электронная таблица с именем 'RSS Filter' находится в корне моего диска, и предположим, что она имеет два листа:' фильтры' и 'sources'. Как я могу объявить массив и заполнить его содержимым данного диапазона в '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()' именно то, что мне нужно; огромное спасибо. Я был во всем этом классе, поэтому, я думаю, мое единственное оправдание в том, что его формулировка не очень проста. –

Смежные вопросы