モーリーのメモ

アプリ開発等(プログラミング、CG作成)、興味を持ったことを実践してまとめるブログです。

モーリーのメモ

セルのデータをWebで検索する!(英単語の辞書引き):Googleスプレッドシート

 Googleスプレッドシートに、単語や熟語を入力してEnterキーを押すと、
f:id:mmorley:20161018105158p:plain
 辞書のリンクが出て、
f:id:mmorley:20161018105549p:plain
 辞書が引けるようにします。
f:id:mmorley:20161018165325p:plain:w500
 
 作り方を説明します。
 プログラムの部分はコピペで出来ます。

使用環境

 私が使用している環境です。

設定方法

 Googleスプレッドシートは、無料で使えるオンラインの表計算(エクセルみたいな)アプリです。
 利用するにはGoogleアカウントが必要です。

2.新しいスプレッドシートを作成

  1. 画面右下の赤い『+』をクリック
    f:id:mmorley:20160511135546p:plain
    『無題のスプレッドシート』が開きます。
  2. 名前を変更
    名前は何でも構いません。
    f:id:mmorley:20160511140418p:plain:w500

3.スクリプトエディタを開く

  1. 『ツール』-『スクリプトエディタ』をクリック
    f:id:mmorley:20161018224209p:plain:w500
    スクリプトエディタで『無題のプロジェクト』が開きます。

4.コードをコピペする

  1. スクリプトエディタの『コード.gs』にあるコードを全て削除
  2. 下記のコードをコピーして、『コード.gs』に貼り付ける
// セルの値 変更時のイベント
function onEdit(event) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // アクティブシート
  var cell = sheet.getActiveCell(); // アクティブセル
  if(cell.getColumn() === 1 && cell.getValue() !== ""){ // アクティブセルがA列の場合
    var arrURL = []; // URLの配列
    var objURL; // URLのオブジェクト
    // 英辞郎のURLを追加
    objURL = { // URLのオブジェクト
      title:'英辞郎',
      url:'http://eow.alc.co.jp/search?q=' + cell.getValue() + '&ref=al&dom=alcom.alc.co.jp'
    };
    arrURL.push(objURL); // 配列に追加
    // ==========
    // Google翻訳のURLを追加
    objURL = {
      title:'Google翻訳',
      url:'https://translate.google.com/?hl=ja#en/ja/'+ cell.getValue()
    };
    arrURL.push(objURL); // 配列に追加
    // ==========
    showURL(arrURL); // リンクを作成
  }
}

// 指定したURLのリンクを作成
function showURL(arrURL){
  var app = UiApp.createApplication().setHeight(60).setWidth(80); // フォームを作成
  var wrapper = app.createVerticalPanel(); // Vertical Panelを作成
  app.setTitle('辞書'); // タイトルを作成
  for(var i = 0; i < arrURL.length; i++){
    var link = app.createAnchor(arrURL[i].title, arrURL[i].url); // リンクを作成
    wrapper.add(link); // フォームにリンクを追加
  }
  app.add(wrapper); // Vertical Panelを追加
  var sheets = SpreadsheetApp.getActive(); // 現在のスプレッドシートを取得
  sheets.show(app); // スプレッドシートにフォームを追加
}

// スプレッドシート オープン時のイベント
// スプレッドシートのメニューに追加
function onOpen(){
  var ssheet = SpreadsheetApp.getActiveSpreadsheet();
  var menu = [{name: 'リンク作成', functionName: 'onEdit'},
          ];   
  ssheet.addMenu('辞書', menu);
}

5.コードを保存

  1. 『保存』ボタンをクリック
    f:id:mmorley:20160511155732p:plain
  2. プロジェクト名を入力して『OK』をクリック
    名前は何でも構いません。
    f:id:mmorley:20161018170931p:plain:w400

6.スプレッドシートにメニューを追加

 『辞書』メニューを追加します。

  1. 『実行』-『onOpen』をクリック
    f:id:mmorley:20161018171624p:plain
  2. 『許可を確認』をクリック
    f:id:mmorley:20161018171810p:plain:w400
  3. 『許可』をクリック
    f:id:mmorley:20161018172149p:plain:w450

 スプレッドシートに戻ると、メニューに『辞書』が追加されています。
f:id:mmorley:20161018172809p:plain:w500
 設定は以上です。

使い方

単語・熟語を入力して調べる場合

 スプレッドシートの『A列』に調べたい単語・熟語を入力します。
 『A列』なら何行目でも構いません。
f:id:mmorley:20161018174532p:plain
 Enterキー等で入力を確定すると、リンクが表示されます。
 もっと詳しく言うと、セルの内容が変更された際にリンクを作成します。
 なので変更がない場合はリンクが作られません。
f:id:mmorley:20161018105549p:plain
 リンクをクリックすると、クリックしたサイトが開きます。

入力済みの単語・熟語を調べる場合

 そのセルを選択します。
 メニューの『辞書』→『リンクを作成』をクリックすると、リンクが表示されます。
 リンクをクリックすると、クリックしたサイトが開きます。

リンクの追加

 辞書・翻訳サイトで、単語を検索した時、
 URLが、"サイトのURL"と"調べた単語"で出来ている場合は追加出来ます。
 例えば、英和辞典・和英辞典 - Weblio辞書で"test"を検索すると、
 URLがhttp://ejje.weblio.jp/content/testです。
 『設定方法』の『4.コードをコピペする』の
『// 英辞郎のURLを追加』〜『// ==========』の部分のようにコードを追加します。

    // weblioのURLを追加
    objURL = { // URLのオブジェクト
      title:'weblio',
      url:'http://ejje.weblio.jp/content/' + cell.getValue()
    };
    arrURL.push(objURL); // 配列に追加
    // ==========

 ↑のコードの『cell.getValue()』の部分が、"調べた単語"に該当する所です。
 リンクを削除したい場合は、上記の部分を消すだけです。
 
 なお、リンク表示のフォームが小さい場合は、下記の部分の『setHeight(60)』で高さを、『setWidth(80)』で幅を変更して下さい。

var app = UiApp.createApplication().setHeight(60).setWidth(80); // フォームを作成

あとがき

 分からない英単語をスプレッドシートに書き連ねては、辞書で調べていたのですが、一手間減らせないかと作りました。
 本当はセルをダブルクリックしたら、即辞書サイトが開くようにしたかったのですが、やり方が見つからなかったのでひとまずこんな形にしました。Webアプリの制限的なもので出来ないのかもしれません。
 
 意味とか用例は『英辞郎』をメインで調べて、発音を『Google翻訳』で聞いたりしています。
f:id:mmorley:20161018223026p:plain:w250