Googleスプレッドシートの小さなavito価格追跡スクリプト

GoogleスプレッドシートのAVITO発表サイトから価格をダウンロードするための小さなスクリプトをコミュニティと共有したいと思います。 突然、他の誰かが重宝します。



ロジックはこれです-サイクルで、アドレスとリクエストページでテーブルのセルを実行します。 受信したページから価格を取得し、隣接するセルに置き換えます。 メニュー項目Avito->価格の更新からスクリプトを実行します。



ページサンプル

(名前はシック!)



さらに詳しい手順を説明します。 私は、名前とメニュー項目が英語であることを所有していない人のために事前に謝罪します。 写真から、ロシアのインターフェースの手順を再現できると思います。



同様のページを取得するには、次の手順を実行します。



1)Googleスプレッドシートドキュメントを作成する

(https://docs.google.com/spreadsheets->新しいスプレッドシートを開始する->空白)

新しい空白のスプレッドシートを作成



2)検索することにより、Avitoで興味を引く広告を見つけ、ドキュメント内のアドレスに置き換えます。 それは次のようなものでなければなりません

URLを埋める



3)名前付き範囲「URL」を作成します。 これを行うには、データ->名前付き範囲...を選択します

名前付き範囲

リストの最初のアドレスにカーソルを置き、[+範囲を追加]をクリックし、「URL」と入力して[完了]をクリックします。

名前付き範囲パラメーター



4)スクリプトエディターのツール->スクリプトエディターに移動します

スクリプトエディターを実行する



既存のものを消去し、次のコードを貼り付けます。

function priceToInt(pPrice){ var res = parseInt(pPrice.replace(/\D/g, "")); return res; } function onOpen() { var ui = SpreadsheetApp.getUi(); ui.createMenu('Avito') .addItem('Update Prices', 'updatePrices') .addToUi(); } function updatePrices() { var sheet = SpreadsheetApp.getActiveSheet(); var ss = SpreadsheetApp.getActiveSpreadsheet(); var range = ss.getRangeByName('URL'); var firstRow = range.getRow(); var firstCol = range.getColumn(); var howManyRowsRead = 50; Logger.log('firstRow = ' + firstRow); Logger.log('firstCol = ' + firstCol); var data = sheet.getRange(firstRow, firstCol, howManyRowsRead, 1).getValues(); LLL: for (var i = 0; i < data.length; i++) { var url = data[i][0]; if (!url) break LLL; var prevPriceCell = sheet.getRange(firstRow+i, firstCol+2); var priceCell = sheet.getRange(firstRow+i, firstCol+1); prevPriceCell.setValue(priceCell.getValue()); priceCell.setValue('0'); var options = { headers : {'Cache-Control' : 'max-age=0', 'Referer': 'https://www.avito.ru/tolyatti/doma_dachi_kottedzhi/prodam?pmax=2700000&pmin=600000&geo=53.50804496509228%2C49.1193614935664%2C53.52551454627456%2C49.183133695104516%2C15%2Cf', 'Upgrade-Insecure-Requests': '1', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36'}, muteHttpExceptions: true, }; var response = UrlFetchApp.fetch(url, options).getContentText(); var p1 = '<span itemprop="price">'; var l1 = response.indexOf(p1); var p2 = '</span>'; var l2 = response.indexOf(p2, l1 + p1.length); Logger.log('l1 = ' + l1); Logger.log('l2 = ' + l2); if (l1 != -1 && l2 != -1) { var price = response.substring(l1 + p1.length,l2); Logger.log('price = ' + price); priceInt = priceToInt(price); Logger.log('priceInt = ' + priceInt); priceCell.setValue(priceInt); } } }
      
      







保存します。 スクリプト名は関係ありません。

スクリプトを保存



それだけです! スクリプトエディタを閉じて、スプレッドシートを更新できます。 メニュー項目Avito->価格の更新が表示されます。

それを選択し、必要な権利を与え、価格がどのように文書に記入されるかを確認します。

PSプロセスでエラーが発生した場合、スクリプトエディターの[ツール]-> [スクリプトエディター]-> [表示]-> [ログ]から利用可能なログが原因の特定に役立ちます。



All Articles