以前から気にはしていましたが、ずっとスルーしていた「Googleプライバシーポリシー」を読んでみました。
2018/9/4
2回読んでみましたが、とにかくあらゆる情報を収集するそうです。
気が付けば明日がやってくる。 -ubuntu備忘録- ubuntuで試しにやったことをメモしています。 最近は、Raspberry Pi、Arduino、DIYなど色々になりますが。。。
2018年8月18日土曜日
Googleスプレッドシートで Google Apps Script を使って Amazon API から価格を取得してみた。
Google スプレッドシートで、Google Apps Script から Amazon API を使用して、価格を読み込みに挑戦しました。
以前から出来ることは知っていましたが、やり方が全くわかりませんでした。
今日はまとまった時間が取れたので、下のページを参考に試行錯誤でやってました。
【参考】Amazon Product Advertising API を Google Apps Scriptで使う
若干の変更を加える必要がありましたが、価格の読み込みに成功しました。
ISBNから取得を紹介するページは多くありましたが、ASINで検索する方法の紹介が見当たらなかったので少し苦労しましたが難しい部分はありませんでした。
もう少し作り込んで近日中にコードを下に貼り付けていきたいと思います。
最近は時間が無いのでスキマ時間にPCで遊ぶくらいしかできない。。。
次のスキマ時間はいつだ!?
2018/8/18
APIを読み込んで価格の取得方法はわかりました。
取得した価格をスプレッドシートへ入力する方法もわかりました。
前回の価格と今回の価格を比較して、安ければメールを送る方法もわかりました。
トリガーから、時間主導型のイベントを設定して動作させる方法がわかりました。
さて、ここからが問題。。。この前の Prime Day で欲しかったものをまとめて買ったので価格チェックをしたい商品が思い浮かばない。
2019/5/5
nanVeさん、コメントありがとうございます。
2019年1月頃に、利用ポリシーの変更があり、それから動かなくなっています。
愛用していたのに残念。。。この記事を放置していて、アドバイス出来ずごめんなさい。
時期未定ですが、動くように修正して記事を改訂します。
以前から出来ることは知っていましたが、やり方が全くわかりませんでした。
今日はまとまった時間が取れたので、下のページを参考に試行錯誤でやってました。
【参考】Amazon Product Advertising API を Google Apps Scriptで使う
若干の変更を加える必要がありましたが、価格の読み込みに成功しました。
ISBNから取得を紹介するページは多くありましたが、ASINで検索する方法の紹介が見当たらなかったので少し苦労しましたが難しい部分はありませんでした。
もう少し作り込んで近日中にコードを下に貼り付けていきたいと思います。
最近は時間が無いのでスキマ時間にPCで遊ぶくらいしかできない。。。
次のスキマ時間はいつだ!?
2018/8/18
APIを読み込んで価格の取得方法はわかりました。
取得した価格をスプレッドシートへ入力する方法もわかりました。
前回の価格と今回の価格を比較して、安ければメールを送る方法もわかりました。
トリガーから、時間主導型のイベントを設定して動作させる方法がわかりました。
さて、ここからが問題。。。この前の Prime Day で欲しかったものをまとめて買ったので価格チェックをしたい商品が思い浮かばない。
2019/5/5
nanVeさん、コメントありがとうございます。
2019年1月頃に、利用ポリシーの変更があり、それから動かなくなっています。
愛用していたのに残念。。。この記事を放置していて、アドバイス出来ずごめんなさい。
時期未定ですが、動くように修正して記事を改訂します。
function onOpen() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var entries = [
{
name : "AmazonAPIを実行",
functionName : "amazonFunction"
}
];
sheet.addMenu("スクリプト実行", entries);
//メインメニュー部分に[スクリプト実行]メニューを作成して、
//下位項目のメニューを設定している
};
function callAmazonAPI(asin) {
// Amazon API を読み込んで、価格を抽出する。
var associate_tag_id = "アソシエイトのタグID";
var access_key_id = "アクセスキー";
var secret_key = "シークレットキー";
var endpoint = "webservices.amazon.co.jp";
var uri = "/onca/xml";
var params = {
Service: "AWSECommerceService",
Version: "2013-08-01",
Operation: "ItemSearch",
AWSAccessKeyId: access_key_id,
AssociateTag: associate_tag_id,
SearchIndex: "All",
Timestamp: new Date().toISOString(),
Keywords: "asin= " + asin,
//ResponseGroup: "ItemAttributes,Offers"
ResponseGroup: "Offers"
};
// ソートが必要
var sort_params = Object.keys(params).sort();
sort_params = sort_params.map(function(key) {
return key + "=" + encodeURIComponent(params[key]);
});
var canonical_query_string = sort_params.join("&");
var string_to_sign = "GET\n" + endpoint + "\n" + uri + "\n" + canonical_query_string;
// 署名が必要
var signature = Utilities.base64Encode(Utilities.computeHmacSha256Signature(string_to_sign, secret_key));
// リクエストのURL
var request_url = 'http://' + endpoint + uri + '?' + canonical_query_string + '&Signature=' + encodeURIComponent(signature);
// レスポンス取得
// 503エラーでもレスポンスを受け取れるようにmuteHttpExceptionsをtrueにする
var response = UrlFetchApp.fetch(request_url, {muteHttpExceptions: true});
var responseCode = response.getResponseCode();
var responseBody = response.getContentText();
var document = XmlService.parse(responseBody);
var prise = '';
var name = XmlService.getNamespace('http://webservices.amazon.com/AWSECommerceService/2013-08-01');
var root = document.getRootElement();
if (responseCode === 200) {
var items = root.getChild('Items', name).getChildren('Item', name);
for(var i = 0; i < items.length; i++) {
// xmlからitemの情報を取得
prise = items[i].getChild('OfferSummary', name).getChild('LowestNewPrice', name).getChild('Amount', name).getText();
return prise
}
} else {
// エラー時はxmlのnamespaceが異なる
ns = XmlService.getNamespace('http://ecs.amazonaws.com/doc/2013-08-01/');
var message = root.getChild('Error', name).getChild('Message', name);
return message.getText();
}
}
function amazonFunction () {
// Amazon API から取得した価格をスプレッドシートへ入力し、値段が安ければメールを送信する。
var book = SpreadsheetApp.getActiveSpreadsheet();
var sheetData = book.getSheetByName("シート1");
var rowASIN = 1;
var colPrise = 2;
var colStartData = 2
var colEndData = sheetData.getDataRange().getLastColumn()
var rowEndData = sheetData.getDataRange().getLastRow()
sheetData.getRange( rowEndData+1, 1 ).setValue(new Date().toLocaleString())
for (var i = colStartData; i <= colEndData; i += 1) {
var asin = sheetData.getRange( rowASIN, i ).getValue();
var price = callAmazonAPI( asin )
sheetData.getRange( rowEndData+1, i ).setValue(price);
}
checkPrice() //価格を比較して安ければメールを送信
}
function checkPrice(){
// 商品の価格を前後比較する。
var book = SpreadsheetApp.getActiveSpreadsheet();
var sheetData = book.getSheetByName("シート1");
var colStartData = 2
var rowItemName = 2
var colEndData = sheetData.getDataRange().getLastColumn()
var rowEndData = sheetData.getDataRange().getLastRow()
for (var i = colStartData; i <= colEndData; i += 1) {
// 前後データを取得する
var itemName = sheetData.getRange( rowItemName , i ).getValue().replace(/\r?\n/g,"") // 改行を除去する。
var prePrice = Number(sheetData.getRange( rowEndData-1, i ).getValue());
var nowPrice = Number(sheetData.getRange( rowEndData , i ).getValue());
var dtPrice = prePrice - nowPrice
if( dtPrice > 0 ) {
// 価格が安くなったらメールを送る。
var title = itemName + "が、"+String(dtPrice)+"円、安くなっています。"
var body = "ご主人さま\n\nAmazonの価格を調べたら\n"+title+"\n\nどうされますか?\n\n前回の価格 "+String(prePrice)+"円\n今回の価格 "+String(nowPrice)+"円"
MailApp.sendEmail('メールアドレス', title, body);
}
}
}
//function myFunction () {
// Browser.msgBox("確認", "Hello GAS World.", Browser.Buttons.OK);
//}
2018年8月13日月曜日
Google Apps Script で Hello World をやってみる。
Google Apps Script で Hello World をやってみました。
まず、Chrome拡張機能に Google Apps Script を入れる。
エディターを立ち上げてコード入力する。
Google Apps Script には下記2種類がありますが、私自身やり始めたばかり
●Standalone Script (ドライブ上に単独で存在するもの)
●Container Bound Script (スプレッドシートに紐づくもの)
なので Standalone Script で実行していたようで、Browser.msgBox はエラーが出て動きませんでした。実行結果は、Ctrl+Enter で確認して完了。
さて、ここからが始まりの始まりなんですよね!
2018/8/16
定期的にスクレイピングを実行できるようなので、Amazonの価格変動をメールで連絡してもらうスクリプトが作ってみたい。
まず、Chrome拡張機能に Google Apps Script を入れる。
エディターを立ち上げてコード入力する。
function myFunction() {
Logger.log("Hello World!!");
// Browser.msgBox(Logger.getLog());
}
Google Apps Script には下記2種類がありますが、私自身やり始めたばかり
●Standalone Script (ドライブ上に単独で存在するもの)
●Container Bound Script (スプレッドシートに紐づくもの)
なので Standalone Script で実行していたようで、Browser.msgBox はエラーが出て動きませんでした。実行結果は、Ctrl+Enter で確認して完了。
さて、ここからが始まりの始まりなんですよね!
2018/8/16
定期的にスクレイピングを実行できるようなので、Amazonの価格変動をメールで連絡してもらうスクリプトが作ってみたい。
2018年6月17日日曜日
音声入力に可能性を感じています。
最近は仕事が忙しくなり、全体的に時間がたらないなあ、と思う今日この頃。
少しでも仕事する時間を短くしたい、音声入力を使ってキーボードを打つ手間を短くできたら楽になるのに、議事録を手早く簡単に書けたら、と以前から思っていました。
Windows の音声認識はイマイチだし、
市販の音声認識ソフトのドラゴンスピーチやAmiVoiceは、
そこそこいい値段がするので躊躇していました。
Twitterでチラチラと見ていたので知ってはいましたが、WEBを調べているとGoogleドキュメントを使用して、音声入力が簡単にできるそうです、Googleの音声入力を紹介しているブログを読むと、ブログの人もGoogleの音声入力を使用して記事を書いているよう。
ということで、早速この記事を、Google ChromeでGoogleドキュメントを開き、Google音声入力を使用して書いてみました。
改行や句読点、誤記訂正をキーボードで入力する必要はありますが、明らかに文字を入力する時間が短くなります。
使い方に慣れれば、いろいろと期待できるところがありそうです。
今回は、音声入力を使ってブログの記事を書いてみましたが、この音声入力を使ってプログラムの開発ができれば、開いた両手で参考文献を読みながら、他事を考えながら作業できるので、可能性が高まり、効率が上がりそうです。
これを使って記事を量産できるかも・・・しれない!?
2018/8/13
音声入力を色々試した結果、とても便利ですが使える場所が限定的(静かな場所)。一人で集中できる場所って、今の私には車の中くらいしかない。。。
少しでも仕事する時間を短くしたい、音声入力を使ってキーボードを打つ手間を短くできたら楽になるのに、議事録を手早く簡単に書けたら、と以前から思っていました。
Windows の音声認識はイマイチだし、
市販の音声認識ソフトのドラゴンスピーチやAmiVoiceは、
そこそこいい値段がするので躊躇していました。
Twitterでチラチラと見ていたので知ってはいましたが、WEBを調べているとGoogleドキュメントを使用して、音声入力が簡単にできるそうです、Googleの音声入力を紹介しているブログを読むと、ブログの人もGoogleの音声入力を使用して記事を書いているよう。
ということで、早速この記事を、Google ChromeでGoogleドキュメントを開き、Google音声入力を使用して書いてみました。
改行や句読点、誤記訂正をキーボードで入力する必要はありますが、明らかに文字を入力する時間が短くなります。
使い方に慣れれば、いろいろと期待できるところがありそうです。
今回は、音声入力を使ってブログの記事を書いてみましたが、この音声入力を使ってプログラムの開発ができれば、開いた両手で参考文献を読みながら、他事を考えながら作業できるので、可能性が高まり、効率が上がりそうです。
これを使って記事を量産できるかも・・・しれない!?
2018/8/13
音声入力を色々試した結果、とても便利ですが使える場所が限定的(静かな場所)。一人で集中できる場所って、今の私には車の中くらいしかない。。。
2018年6月16日土曜日
Google Home mini を買ってしまった
今日、2018年6月16日、Google Home miniを買ってしまった。
今朝、インターネットを検索していると、ヨドバシカメラでGoogle Home miniの半額キャンペーンをやっているのを発見。 もしかして、近所の家電量販店でも半額キャンペーンをやっているかもしれない、と思い近所のヤマダ電機へ行ってきたとろこ、同じように半額キャンペーンをやっていました。 3000円だったので、迷わず購入。 まっすぐ家に帰ってセットアップ。 音声認識は予想以上に精度が良かったです。 ワールドカップの結果を教えてくれたり、最新のニュースを説明してくれたり、クジラやイルカの鳴き声を教えてくれたり、タイマーを設定してくれたりします。 これ以外の使い方はわかりませんが。。。 Google Home mini は色々な機能を持っていると思いますが、今の僕には使いこなすことは難しいと思います。なので、今回買ったこの Google Home mini は Bluetooth スピーカーをメインとして活躍していただこうと思います。 追伸 最近、Google音声入力の使い方がわかってきました。コツをつかめば非常に便利。入力速度はブラインドタッチより早くて楽チン。
2018年8月5日
Google Home mini は文鎮のようなものとなりました。
今朝、インターネットを検索していると、ヨドバシカメラでGoogle Home miniの半額キャンペーンをやっているのを発見。 もしかして、近所の家電量販店でも半額キャンペーンをやっているかもしれない、と思い近所のヤマダ電機へ行ってきたとろこ、同じように半額キャンペーンをやっていました。 3000円だったので、迷わず購入。 まっすぐ家に帰ってセットアップ。 音声認識は予想以上に精度が良かったです。 ワールドカップの結果を教えてくれたり、最新のニュースを説明してくれたり、クジラやイルカの鳴き声を教えてくれたり、タイマーを設定してくれたりします。 これ以外の使い方はわかりませんが。。。 Google Home mini は色々な機能を持っていると思いますが、今の僕には使いこなすことは難しいと思います。なので、今回買ったこの Google Home mini は Bluetooth スピーカーをメインとして活躍していただこうと思います。 追伸 最近、Google音声入力の使い方がわかってきました。コツをつかめば非常に便利。入力速度はブラインドタッチより早くて楽チン。
2018年8月5日
Google Home mini は文鎮のようなものとなりました。
2017年8月19日土曜日
登録:
投稿 (Atom)
-
Slic3rをインストールします。 http://slic3r.org/ Slic3rは3DモデルをGコードへ変換するソフト。 sudo apt-get install slic3r
-
今回は、Amazonで買った HiLetgo ATMEGA328P-16AU CH340G の動作確認を行います。 (履歴では399円で購入。現在は2個売りで少し高かった。) 最新は、 Arduino IDE 1.8.5 だったのでこれを使用。 下のテストコードで、Lチカして...
-
この記事 の続き。 単純に画像ファイルを表示するだけでは、変化が無く面白くないので、BeautifulSoupを使ってWebの画像とデータを表示するものを作成してみました。 Web scrapingは、個人利用か検索用に使用するに留めるべき、マナーがありますのでご利用は計...
-
この記事の続きになります。 Amazonで購入した OSOYOO 3.5インチLCD のタッチスクリーンを設定(ドライバー)してみた。 Raspberry Pi(Linux OS装着)で3.5” タッチスクリーン(HDMI版)のドライバーをインストールする このWeb...
-
Raspberry Pi3で、コンソールからpygameを使用して画面表示に挑戦(その1) この記事 「Raspberry Pi 3 で、SSHからコンソールに画像をfbiで出力してみた。」 で、fbiコマンドを使ってみたが簡単なようで使い難かった。 pygameは標準で...
2年ぶりに更新
最後の記事が21年3月でしたので、27ヶ月ぶり。 2020年頃から始まったコロナ禍から在宅ワークがなくなり、通常運転に慣れてきた頃。 そろそろ新しい趣味を探していこうと思っています。 さて何するかな。。。
