5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

概要

自分のお気に入りのページのリンクを一覧表示・管理できるアプリを作ってみた。

動機

手軽にリンクを整理・追加できるツールが欲しい。
Safariなどのブラウザにあるブックマーク機能では少し使いづらい。

開発環境

Google Apps Script(GAS)

仕様

アプリにアクセスすると、テキスト形式で保存されたリンクを表示する
アプリからの操作で保存してある情報の追加等が簡単に行える

実装

データ管理

今回はリンク等のデータをGoogleドライブに保存していく
GASのライブラリを利用してドライブ上のファイルからデータを読み取れるように実装
※ファイルのIDはスクリプトプロパティに保存することで、トラブル等で変更になった際にも書き換えが容易になる

read-data-program.png
JSONで保存されたテキストをJavaScriptで扱える辞書のような形式に変換しておく

基本動作

  • メイン画面はシンプルにリンクを並べて表示
  • それぞれを右クリックすることで、ダイアログから関連付けられたURLを編集できるようにする
    (クリック時に該当要素に対して処理を実行し、情報を取得)

HTMLのdialog要素を使用し、シンプルなオリジナルのダイアログを作成してみた
・「名前」欄 メイン画面にサイトの画像と共に表示されているタイトルが表示される
・「サイト」欄 それぞれの項目に対応するURLが表示される

テキストボックスの内容を変更した場合、「決定」ボタンでダイアログを閉じて記録された内容を更新する(Googleドライブの保存先にも反映される)

main.pngメイン editDirelog.pngダイアログ

データが読み込まれた(アプリ起動時に実行)際、HTML側でデータに応じた数の要素を動的に作成する

※forルーブで処理を実装した後、一時変数の扱いで少々困った。letで変数を再定義することで、ループごとに固有の値で参照することに成功。

loopValue.png

項目の追加・削除が行えるように改良していく
・メイン画面の一番下の入力欄から、任意のURLを追加
・メニューの「削除」から、登録済みの値と画面上の要素が削除される

小さめのダイアログを追加することで、選択中の要素の「編集」「削除」をボタン操作で明確に分けた

※キーと値のデータを関連付けて登録していく(辞書のような形式)方法では、キーの順番が変わってしまう可能性がある。
そこでそれぞれを通常の配列に含めることで、順番を維持しながら扱う方式に変更(値の取得、追加、削除用の関数を作成した)

あとから改善してみた点

  • スマホ利用時に操作しやすいように、メニュー表示をダブルクリックでも可能に
  • 通常のクリックでリンクを開くが、ダブルクリックと混同しないように処理の条件を追加(該当要素のメニュー表示時のみ)
  • ページから取得した画像を自動でサイズ変更(img要素のstyleを書き換える)

使い方

ダウンロード

今回は個人用のツールとして開発したので、このバージョンの配布予定はありません。

参考サイト

プロパティ サービス | Apps Script | Google for Developers
▼JSONをJavaScriptのオブジェクトに変換する ‐ JavaScript ‐ GRAYCODE
▼JavaScriptでJSONを生成する方法を現役エンジニアが解説【初心者向け】 | TechAcademyマガジン
【JavaScript】dialog要素を使ってダイアログを自作する
【JavaScriptの基本】マウスイベント -カーソル移動 | ワードプレステーマTCD
▼【jQuery】右クリックで発火するcontextmenuの使い方 | ZeroPlus Media
▼thisって何?使い方を覚えて、JavaScriptをもっと楽しく使おう! | 侍エンジニアブログ
▼【JavaScript入門】「for - of文」の使い方と間違いやすいポイントを徹底解説! | 侍エンジニアブログ
▼【JavaScript】let、const、varの違いと使い分け方法を徹底解説 - TECH PLAY Magazine
▼関数とスコープ · JavaScript Primer #jsprimer
▼input要素でEnterキー入力を検出する方法が、いつの間にかアップデートされていた #JavaScript - Qiita
▼【Javascript】remove()で要素を削除する #JavaScript - Qiita
▼【html/CSS】画像サイズを自動調整で親の幅に合わせる方法

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?