約 5,133,882 件
https://w.atwiki.jp/api_programming/pages/98.html
Charts - Google 下位ページ Content 色 再描画画面リサイズ時 グラフの要素を選んだ時に何かを動作させる https //developers.google.com/chart/interactive/docs/ まだ使ったことがあるのは timeline だけ。 ライブラリをロードする script type="text/javascript" src="https //www.gstatic.com/charts/loader.js" /script 描画しようとする グラフタイプ だけ、 google.charts.load でロードする最初の引数 読み込むバージョン番号 (String) current とした場合は最新バージョン upcoming とした場合は次期テストバージョン 二つ目の引数 グラフの種類こんな感じ {packages [ corechart , table , sankey ]} packages, language, callback, mapsApiKey callback 次の setOnLoadCallback で指定する関数をここで指定することもできる。 google.charts.setOnLoadCallback で描画する関数を指定する。グローバルでユニークな名称とすること。 サンプルでは "drawChart" で描画する 使い方 https //developers.google.com/chart/interactive/docs/gallery/timeline そのまま 流れ 色 optionにcolorsを指定。chart.draw(data,option)のoption。 option = { colors [ #000000 , #111111 ]} http //www.colordic.org/ 再描画 画面リサイズ時 script ... var chart; ... google.setOnLoadCallback(function () { data = google.visualization.arrayToDataTable(); options = { title 会社業績 ;} chart = new google.visualization.LineChart(document.getElementById( gct_resizable_chart )); chart.draw(data, options); );} /script body onresize="chart.draw(...)" リサイズ時の関数に使う、chartなどの変数宣言を、setOnLoadCallbackの外で行っておくことがポイント Google Chart Tools - 動的なグラフの変更 - プログラマーズ雑記帳 グラフの要素を選んだ時に何かを動作させる とりあえずtimeline chartのばあい、以下をイベントリスナー addlistener に設定 getSelectionで、選ばれた要素のオブジェクトを取得する。複数選ばれることもある?配列で渡されるみたい 配列の一要素に、(グラフの元になった)行(、列)がどこか?という情報が入っている データが入っているオブジェクトに対して.getValue か .getFormattedValueでとりだす。
https://w.atwiki.jp/yamadanana/pages/25.html
Google+ (https //plus.google.com/102277090985412703374)に投稿された画像です。 (こちらの画像は直リンク(1クリック)で表示されます) http //lh5.googleusercontent.com/-3M7ammWB7d8/TuIdHMJuepI/AAAAAAAABPE/7euHVkJMGVI/s0/09%2B-%2B1.jpg http //lh5.googleusercontent.com/-bTBfc3neEXY/TuLWf3FrQPI/AAAAAAAABwg/v5oUddFGfpc/s0/09%2B-%2B1.jpg http //lh4.googleusercontent.com/-gAuSUBTnT0o/TuLgLXD0XEI/AAAAAAAACDk/KAEm_oq51dA/s0/09%2B-%2B1.jpg http //lh5.googleusercontent.com/-YlT4rOoRagg/TuMJDxCqOVI/AAAAAAAACa8/SG-EUty38hk/s0/09%2B-%2B1.jpg http //lh3.googleusercontent.com/-qfm7VZAejJs/TuNYrO1LFDI/AAAAAAAACrk/gfJoPMlg-VA/s0/10%2B-%2B1.jpg http //lh6.googleusercontent.com/--TRWZVfpp4U/TuN5aZcls-I/AAAAAAAAC40/6Luw5NjTP8A/s0/10%2B-%2B1.jpg http //lh3.googleusercontent.com/-BLxi3o6DSDs/TuOQ3F5rjQI/AAAAAAAADOA/2DOQHkiT2mA/s0/10%2B-%2B1.jpg http //lh4.googleusercontent.com/-9b7TZYbOK8Y/TuS95PF7_dI/AAAAAAAADn4/zFurQ7JDhds/s0/11%2B-%2B1.jpg http //lh6.googleusercontent.com/-qsm9eNFrirI/TuU_922VukI/AAAAAAAAD6Q/haA_GlmMX8I/s0/11%2B-%2B1.jpg http //lh6.googleusercontent.com/-BT7HRl3RG58/TuXRB6XB1gI/AAAAAAAAEUQ/oYReniT6Prk/s0/12%2B-%2B1.jpg http //lh3.googleusercontent.com/-jeHzuE3ll7A/TuYPkVHfalI/AAAAAAAAEf4/ncDMe8jP-V4/s0/12%2B-%2B1.jpg http //lh4.googleusercontent.com/-L8lIKBnCkxc/TuZiHmqHn4I/AAAAAAAAE5I/5pXHlYI1aJE/s0/12%2B-%2B1.jpg http //lh4.googleusercontent.com/-B_yHPX8ocN8/TuaIvZTYfhI/AAAAAAAAFJM/-MTFjcZyNQk/s0/12%2B-%2B1.jpg http //lh6.googleusercontent.com/-HDbs4JLxa5U/Tuata9lwcII/AAAAAAAAFXM/j5Piq0EcUp0/s0/12%2B-%2B1.jpg http //lh5.googleusercontent.com/-X_IOChZGBiI/Tubll_1zUFI/AAAAAAAAFhk/Jr-8pHF6CvM/s0/12%2B-%2B1.jpg http //lh3.googleusercontent.com/-ydQYUGjBUYw/TuiftmFco6I/AAAAAAAAF5Y/OcS9JEUm_dI/s0/14%2B-%2B1.jpg http //lh4.googleusercontent.com/-svrUzt17fuE/TumkKSdtcMI/AAAAAAAAGV4/PecRoCdJVC8/s0/14%2B-%2B1.jpg http //lh4.googleusercontent.com/-ExsF0RiFV70/Tun3jWbtJ5I/AAAAAAAAGh8/E3SHP2tHd3s/s0/15%2B-%2B1.jpg http //lh6.googleusercontent.com/-JCZT7A6aeno/Tur_4LXPqhI/AAAAAAAAGuE/NkAUvAHsmJ0/s0/16%2B-%2B1.jpg http //lh5.googleusercontent.com/-JRgQCZrNdOM/TusRH2byyzI/AAAAAAAAG5U/gYk5J-7V6aE/s0/16%2B-%2B1.jpg http //lh4.googleusercontent.com/-bTxuntxz1eI/Tus0co4aBjI/AAAAAAAAHDI/508ITFlr8Z4/s0/16%2B-%2B1.jpg http //lh6.googleusercontent.com/--pZU0tEyQpo/TutasI7GnzI/AAAAAAAAHcE/H0EfL-w6drk/s0/16%2B-%2B1.jpg http //lh4.googleusercontent.com/-BQD3x0KRMfQ/TuvRXhJC0fI/AAAAAAAAHtw/Rh3DKfKUTxw/s0/16%2B-%2B1.jpg http //lh3.googleusercontent.com/-wNDIF2Dw8LA/Tuwz1wOTjmI/AAAAAAAAIBE/ATeJLCIkJSI/s0/16%2B-%2B1.jpg http //lh5.googleusercontent.com/-1fb0C0UMiyE/TuytbFBkMfI/AAAAAAAAIPw/BnhRjx_-Bv4/s0/17%2B-%2B1.jpg http //lh3.googleusercontent.com/-QFs6nDOHEgM/Tuy6w8KHaFI/AAAAAAAAIbM/aHl9bNHwYS4/s0/17%2B-%2B1.jpg http //lh4.googleusercontent.com/-pnH4KmZb0YI/Tu6pBSasK1I/AAAAAAAAJAU/Ub4xvjw1lX8/s0/18%2B-%2B1.jpg http //lh5.googleusercontent.com/-6NJAsN6Tvso/Tu7-x9jPjSI/AAAAAAAAJLk/41qJsRQCTL0/s0/19%2B-%2B1.jpg http //lh6.googleusercontent.com/-ZfUOtfiINSA/TvCubS_oHQI/AAAAAAAAJdc/UCvCyzZ-C9Q/s0/20%2B-%2B1.jpg http //lh3.googleusercontent.com/-SFW1CrlKln0/TvILV-8toKI/AAAAAAAAJ0M/c1s_G9gdIh4/s0/21%2B-%2B1.jpg http //lh5.googleusercontent.com/-rpea2hYVfbo/TvJqpyDPRII/AAAAAAAAJ_0/-j2YV3Vu9MU/s0/21%2B-%2B1.jpg http //lh5.googleusercontent.com/--9OxgQPPhGk/TvLUbBC-dII/AAAAAAAAKRM/frUllZICuUU/s0/21%2B-%2B1.jpg http //lh6.googleusercontent.com/-Y1EH1n3o0sI/TvMgNHGu4_I/AAAAAAAAKZQ/-gWoHJxr9gM/s0/22%2B-%2B1.jpg http //lh4.googleusercontent.com/-pHfUBDa5taQ/TvR9vJZ3-5I/AAAAAAAALFA/jUUproWHmLQ/s0/23%2B-%2B1.jpg http //lh4.googleusercontent.com/-lKr9oIUjSpA/TvVdg4ofIPI/AAAAAAAALUc/UdwMFnmaGh4/s0/23%2B-%2B1.jpg http //lh3.googleusercontent.com/-Dg0Ffqla1P8/TvXWQUJszjI/AAAAAAAALkQ/t_zyQIDuYfw/s0/24%2B-%2B1.jpg http //lh6.googleusercontent.com/-1vXuCIRWmlY/TvXhhnZ-aQI/AAAAAAAALxE/tFLfvyOW3iM/s0/24%2B-%2B1.jpg http //lh5.googleusercontent.com/-wHrhLk2MkEA/TvXxE7UwaVI/AAAAAAAAL9g/n6KzvryPsb0/s0/24%2B-%2B1.jpg http //lh5.googleusercontent.com/-nCa328__YcY/TvYAWO8qW6I/AAAAAAAAMQ4/HCP44GN9AN4/s0/24%2B-%2B1.jpg http //lh5.googleusercontent.com/-rxZAe4BcW3M/TvZX98ir2eI/AAAAAAAAMiQ/IbtSglETXQY/s0/24%2B-%2B1.jpg http //lh3.googleusercontent.com/-hL8jvCbyyeg/TvbfRwBd-II/AAAAAAAAM8s/q1RCPSKqEoc/s0/25%2B-%2B1.jpg http //lh6.googleusercontent.com/-dhxESBtB9ss/Tvcu3n4o6rI/AAAAAAAANLM/X9Wj3G4aAQw/s0/25%2B-%2B1.jpg http //lh3.googleusercontent.com/-XB0TPWtnQPw/TvftZ-84M_I/AAAAAAAANb8/xHXnSfRvmuQ/s0/25%2B-%2B1.jpg http //lh6.googleusercontent.com/-ePzmwv-3SwM/Tvg0PYmA43I/AAAAAAAANm4/5XA8Gshx-8E/s0/26%2B-%2B1.jpg http //lh3.googleusercontent.com/-002RitcCRqM/TviByxXzwhI/AAAAAAAAN1M/9JrKWXEQ-nQ/s0/26%2B-%2B1.jpg http //lh3.googleusercontent.com/-AMWDt8r61Lw/TviWSS0ZGvI/AAAAAAAAOLo/Kq6mkJfBg24/s0/26%2B-%2B1.jpg http //lh6.googleusercontent.com/-xIIuyYZlGDk/TvibjmUbvBI/AAAAAAAAOJI/EeahfFKLc04/s0/26%2B-%2B2.jpg http //lh5.googleusercontent.com/-_sCGN8nX3mQ/TvibjZ7zifI/AAAAAAAAOJE/gqFQ0LlokvU/s0/26%2B-%2B1.jpg http //lh4.googleusercontent.com/-xBnbFeVzgjQ/TvjXPuYJh2I/AAAAAAAAORc/Kkp7nNecYHw/s0/26%2B-%2B1.jpg http //lh3.googleusercontent.com/-m4YmKtskDdM/TvkAyz1unyI/AAAAAAAAOd0/lbUkJZkk4PU/s0/26%2B-%2B1.jpg http //lh5.googleusercontent.com/-AzH_jTFNX4s/TvkbPOhz2xI/AAAAAAAAOms/uDt_VZm5vFw/s0/26%2B-%2B1.jpg http //lh4.googleusercontent.com/-4gDAjbh84ro/TvmqUMymoLI/AAAAAAAAO9s/g-BYKPCCEBk/s0/27%2B-%2B2.jpg http //lh6.googleusercontent.com/-6P1lyfY4exE/TvmqUGKcKPI/AAAAAAAAO9o/2Ldm_evTIkI/s0/27%2B-%2B1.jpg http //lh5.googleusercontent.com/-49fwH_UjrcM/TvprC4pD_xI/AAAAAAAAPEc/FbCTrBN9lRo/s0/27%2B-%2B1.jpg http //lh5.googleusercontent.com/-8T5bMns-hSw/TvrhZW8JO0I/AAAAAAAAPPs/qf_nZQ-I-WM/s0/28%2B-%2B1.jpg http //lh4.googleusercontent.com/-N4IzaRNS0oU/Tvv8ua0_GfI/AAAAAAAAQMo/KuyUHJs2T80/s0/28%2B-%2B1.jpg http //lh4.googleusercontent.com/-Txzk3zhaIHs/TvuOvo5ew0I/AAAAAAAAP74/Ilx9-6ZsXws/s0/28%2B-%2B1.jpg http //lh4.googleusercontent.com/-Tg0iXRamdU0/TvszJUuPN7I/AAAAAAAAPcE/hudNqIDMk4E/s0/28%2B-%2B1.jpg http //lh4.googleusercontent.com/-x4UYjo8FhlQ/Tvxy22uEASI/AAAAAAAAQvc/PefmXOaQnaw/s0/29%2B-%2B1.jpg http //lh5.googleusercontent.com/-HbwzEh7QUMA/Tv-ti8Q6MQI/AAAAAAAAScU/EEOtIV23CEY/s0/31%2B-%2B1.jpg http //lh3.googleusercontent.com/-edoH1R7h810/Tv7cER6TSOI/AAAAAAAARW0/vwI7dSKk53U/s0/31%2B-%2B1.jpg http //lh3.googleusercontent.com/-aLWivmt3RUA/Tv8ims6pCmI/AAAAAAAARmA/3IsvkD9DoP0/s0/31%2B-%2B1.jpg http //lh3.googleusercontent.com/-aLWivmt3RUA/Tv8ims6pCmI/AAAAAAAARmA/3IsvkD9DoP0/s0/31%2B-%2B1.jpg http //lh6.googleusercontent.com/-gAwXpUQiJpk/Tv84HYmdr9I/AAAAAAAAR8w/EUsV_JEW7fM/s0/31%2B-%2B1.jpg http //lh5.googleusercontent.com/-HbwzEh7QUMA/Tv-ti8Q6MQI/AAAAAAAAScU/EEOtIV23CEY/s0/31%2B-%2B1.jpg http //lh4.googleusercontent.com/-8S4Diu07e3M/Tv5-7bdMNqI/AAAAAAAARBM/KUEm1XzXD3w/s0/30%2B-%2B1.jpg http //lh5.googleusercontent.com/-PkvIvxDiYq0/Tv6YP9SX_qI/AAAAAAAARL4/L-lmdrTTV_g/s0/30%2B-%2B1.jpg http //lh5.googleusercontent.com/-zUweSh15iVM/TwBzcpfucTI/AAAAAAAASyI/LNqGsOJ3ciA/s0/01%2B-%2B1.jpg http //lh3.googleusercontent.com/-FMVi7ELNLoM/TwHfC-guozI/AAAAAAAATCk/MX2QAgl7zG0/s0/02%2B-%2B1.jpg http //lh3.googleusercontent.com/-FrySaEXoSsQ/TwKwbkCiArI/AAAAAAAATR0/rYkUuOob0T4/s0/02%2B-%2B1.jpg http //lh5.googleusercontent.com/--OB0gI_gZLA/Twe2APSVHZI/AAAAAAAAT6w/bdYCLUjdB5s/s0/06%2B-%2B1.jpg http //lh4.googleusercontent.com/-MJl7kgfw2Ws/TwgvW0zc9MI/AAAAAAAAUGs/Zl7MrVtwkJ4/s0/07%2B-%2B1.jpg http //lh6.googleusercontent.com/-YrLm0W3ryh4/TwjZFzQaPfI/AAAAAAAAUUY/68aRA_ZPJk4/s0/07%2B-%2B1.jpg http //lh4.googleusercontent.com/-8Q_-ocw4o-Y/TwkKle0l1aI/AAAAAAAAUdw/nwIT6K1q1EQ/s0/07%2B-%2B1.jpg http //lh6.googleusercontent.com/-ByXvSMytyAk/TwkPhAoA2_I/AAAAAAAAUg8/whx9KH1FeHY/s0/07%2B-%2B1.jpg http //lh6.googleusercontent.com/-heuQn1N79T4/TwkSuzLFDeI/AAAAAAAAUmI/ayFPFWrGka8/s0/07%2B-%2B1.jpg http //lh3.googleusercontent.com/-fp-awLxzAqU/Twl-D2KyxUI/AAAAAAAAU3o/kzP1C6WZc1Q/s0/08%2B-%2B1.jpg http //lh4.googleusercontent.com/-Uo7ku5N-ViY/TwmK-r64ZoI/AAAAAAAAVAY/jqR64pN7ulM/s0/08%2B-%2B1.jpg http //lh4.googleusercontent.com/-fsWzhtDgMgE/Twmmk52rshI/AAAAAAAAVPo/l5a75UiUe3M/s0/08%2B-%2B1.jpg http //lh4.googleusercontent.com/-AK_upSrAgas/Twmmkxd3zzI/AAAAAAAAVPs/TZ9GKsxRVLQ/s0/08%2B-%2B2.jpg http //lh3.googleusercontent.com/-nhdhW9yeJ54/TwkJbYw8NMI/AAAAAAAAZH8/xOvMph2FtvA/s0/07%2B-%2B1.jpg http //lh3.googleusercontent.com/-9OMmxP3x-C0/TwsxGBF3JeI/AAAAAAAAWQ8/94MvayFaaOA/h0/09%2B-%2B1.jpg http //lh5.googleusercontent.com/-NrxaZzcyWbw/Tws_04M6TWI/AAAAAAAAWX4/d-kuK7e3dlQ/h0/09%2B-%2B1.jpg http //lh6.googleusercontent.com/-ZEnesnIhzAE/Twt1GSDNSeI/AAAAAAAAWqU/gv1lxOqE608/s0/09%2B-%2B1.jpg http //lh5.googleusercontent.com/-MTr3RbkRXfE/Twt6QV4sDAI/AAAAAAAAWu8/Oq-nsIgDlh4/s0/09%2B-%2B1.jpg http //lh3.googleusercontent.com/-t6GcAGonGj8/Twvo_-fcdfI/AAAAAAAAXCM/U5TBgfHDz_w/s0/09%2B-%2B1.jpg http //lh3.googleusercontent.com/-9HL-K8FAQDI/TwwoNAUSVII/AAAAAAAAXM4/LCr6UiaKVnc/s0/10%2B-%2B1.jpg http //lh6.googleusercontent.com/-1_tnZ5plPro/Tww5gBLJ7YI/AAAAAAAAXZE/SE_vV3qHcyw/s0/10%2B-%2B1.jpg http //lh4.googleusercontent.com/-tTM1iawTkNk/TwxQTqupmHI/AAAAAAAAXhQ/BT4IqIA8Ebo/s0/10%2B-%2B1.jpg http //lh6.googleusercontent.com/-8FDi8hjNkL4/TwxjY3baIHI/AAAAAAAAXoQ/x47qoJKNeGQ/s0/10%2B-%2B1.jpg http //lh5.googleusercontent.com/-Fhix7LzcWqw/TwzfrRLriEI/AAAAAAAAXzc/AA3HsY6zxGY/s0/10%2B-%2B1.jpg http //lh4.googleusercontent.com/-VH-t2mEuhkQ/Twz5bLSHK0I/AAAAAAAAX7s/KYTJzSX5FV0/s0/10%2B-%2B1.jpg http //lh3.googleusercontent.com/-cvBQH1GHCjI/Tw04HQ_899I/AAAAAAAAYKY/PLOsVSGawqI/s0/10%2B-%2B1.jpg http //lh4.googleusercontent.com/-Y5RZuZlnf9Y/Tw1b2IxumxI/AAAAAAAAYWY/UcYgce8xZyA/s0/11%2B-%2B1.jpg http //lh4.googleusercontent.com/-myKwPcyB6xM/Tw71kf3wndI/AAAAAAAAZ80/Rpl_DqjE0Jc/h0/12%2B-%2B1.jpg http //lh5.googleusercontent.com/-URyWYZSTdFA/Tw88AKOpkTI/AAAAAAAAaLM/m-oV0ua7rp4/h0/12%2B-%2B1.jpg http //lh3.googleusercontent.com/-ErArCiK0vus/Tw9xVlx9_KI/AAAAAAAAaXM/Ii8uc2aZN9A/h0/12%2B-%2B1.jpg http //lh3.googleusercontent.com/-kZylGRpyHpM/Tw_Rt0RYlsI/AAAAAAAAamw/t6tUNEsUvmc/h0/12%2B-%2B1.jpg http //lh3.googleusercontent.com/-dtsyBZnu0Aw/TxANs7RXIlI/AAAAAAAAa1Q/XcYEzh88wMs/h0/13%2B-%2B1.jpg http //lh4.googleusercontent.com/-CmFGkh_soks/TxAgT5fE-qI/AAAAAAAAa_I/IT9JrIZYjx8/h0/13%2B-%2B1.jpg http //lh6.googleusercontent.com/-TVXIKjPB9k4/TxDoZxz27yI/AAAAAAAAbVM/EswhUD2mWvs/h0/13%2B-%2B1.jpg http //lh6.googleusercontent.com/-Ocwt4IjofTI/TxFcg2EtoGI/AAAAAAAAb4U/bj91puUomNw/h0/14%2B-%2B1.jpg http //lh5.googleusercontent.com/-QBZMazhPQ6M/TxIm6wf3b_I/AAAAAAAAcUI/-I7esFdlKEE/h0/14%2B-%2B1.jpg http //lh4.googleusercontent.com/-mcbKS0tWtY4/TxK6ZIpFXLI/AAAAAAAAcfE/Kz1WvGG3hzQ/h0/15%2B-%2B1.jpg http //lh4.googleusercontent.com/-exdFy1Mb4Yo/TxLJwjEDnFI/AAAAAAAAcrc/WY4k_IiD_xI/h0/15%2B-%2B1.jpg http //lh5.googleusercontent.com/-ehN_lEk2ie0/TxNlPJDR-NI/AAAAAAAAdBw/aGuwd-jm0kA/h0/15%2B-%2B1.jpg
https://w.atwiki.jp/suddenbrigade/pages/27.html
以下のリンクから、自分の所属部隊番号をチェックできます。 偵察部隊(ロードランナー&軽歩兵) https //docs.google.com/spreadsheets/d/1J3hUJRcqtV8rXHsGa3mbN0qhCA7Yhw5obHSoQwyuudo/edit 砲撃部隊 https //docs.google.com/spreadsheets/d/1J1iQtL8xw7XyOy0B5pZR_z5oFAtbkumDO5uvRlQeJ00/edit?usp=sharing ファンタジー部隊(アーチャー&シーフ) https //docs.google.com/spreadsheets/d/1mO5nKKMLy6p-GMx-TOmvQdSDwONteG0Cvz8JxyZmFlI/edit#gid=0 ダンジョンアタック部隊 https //docs.google.com/spreadsheets/d/1BDMav8AouE4h4Ta995wKjBavTFngUwD3I2Q1JIvK6ik/edit#gid=0
https://w.atwiki.jp/api_programming/pages/193.html
下位ページ Content ライブラリとサンプル(Libraries and samples) 必要条件(Prerequisites)Enable APIs for your project 認証証明書を作る(Create authorization credentials)Option 1 Custom URI scheme (Android, iOS, UWP)SHA-1 fingerprint Option 2 Loopback IP address (macOS, Linux, Windows desktop) Option 3 Manual copy/paste Option 4 Programmatic extraction アクセススコープを確認する(Identify access scopes) アクセストークンの受け取り方(Obtaining OAuth 2.0 access tokens)Step 1 Google OAuth 2.0 サーバーにリクエストを送るサンプル(Sample authorization URLs) パラメータ Step 2 Google prompts user for consent Step 3 Handle the OAuth 2.0 server response Step 4 認証コードとトークンを交換する (Exchange authorization code for refresh and access tokens)レスポンスサンプル Calling Google APIs AndroidでGoogle認証の準備をするProjectを作る *SHA-1 fingerprint を取得する OAuth 2.0 for Mobile Desktop Apps Note If you are new to OAuth 2.0, we recommend that you read the OAuth 2.0 overview before getting started. The overview summarizes OAuth 2.0 flows that Google supports, which can help you to ensure that you ve selected the right flow for your application. This document explains how applications installed on devices like phones, tablets, and computers use Google s OAuth 2.0 endpoints to authorize access to Google APIs. OAuth 2.0 allows users to share specific data with an application while keeping their usernames, passwords, and other information private. For example, an application can use OAuth 2.0 to obtain permission from users to store files in their Google Drives. Installed apps are distributed to individual devices, and it is assumed that these apps cannot keep secrets. They can access Google APIs while the user is present at the app or when the app is running in the background. This authorization flow is similar to the one used for web server applications. The main difference is that installed apps must open the system browser and supply a local redirect URI to handle responses from Google s authorization server. Alternatives For mobile apps, you may prefer to use Google Sign-in for Android or iOS. The Google Sign-in client libraries handle authentication and user authorization, and they may be simpler to implement than the lower-level protocol described here. For apps running on devices that do not support a system browser or that have limited input capabilities, such as TVs, game consoles, cameras, or printers, see OAuth 2.0 for TVs Devices or Google Sign-in for devices. ライブラリとサンプル(Libraries and samples) ライブラリと、ここで書いている Oauth 2.0 flow の実装サンプル AppAuth for Android library and codelab AppAuth for iOS library OAuth for Apps Windows Samples 必要条件(Prerequisites) Enable APIs for your project Any application that calls Google APIs needs to enable those APIs in the API Console. To enable the appropriate APIs for your project Open the Library page in the API Console. Select the project associated with your application. Create a project if you do not have one already. Use the Library page to find each API that your application will use. Click on each API and enable it for your project. 認証証明書を作る(Create authorization credentials) OAuth2.0 を使って Google APIs にアクセスするアプリケーションはアプリ特定するための認証証明書が必要。プロジェクトに証明書を作成するステップを説明(すでにプロジェクトがある前提) API Console の認証情報ページを開き 「認証情報を作成」 「Oauth クライアント ID」 フォームを埋める。この部分は、Google の認証がサポートするリダイレクト方法を記述する。アプリケーションに対し推奨される方法を一つ選び、適切な内容を記述する。 Option 1 Custom URI scheme (Android, iOS, UWP) 推奨適用先 Android apps, iOS apps, Universal Windows Platform (UWP) apps Form values アプリケーションの種類に Android, iOS, その他を選択する。 また、パッケージ名 もしくは bundle ID (アプリケーションの種類に依るが、リダイレクトに使うカスタム URI(例えば com.example.app))を入力する。 SHA-1 fingerprint JDKのbinフォルダに移動する(か、環境変数のパスを仕込んでおく) keytool -list -v -keystore "/Users/{ユーザー名}/.android/debug.keystore" -alias androiddebugkey -storepass android -keypass android UWPアプリでは、スキーム名は39文字以下にする Note redirect_uri は com.example.app redirect_uri_path で構成。path は /(バックスラッシュ)で始まること。加えて、the libraries and samples demonstrate some platform-specific implementations of custom URI scheme redirects. Option 2 Loopback IP address (macOS, Linux, Windows desktop) ローカルウェブサーバを立てることができる場合は、これができる。 推奨適用先 macOS, Linux, and Windows デスクトップアプリ (UWP以外) Form values Other Note See the redirect_uri parameter definition for more information about the loopback IP address. It is also possible to use localhost in place of the loopback IP, but this may cause issues with client firewalls. Most, but not all, firewalls allow loopback communication. Option 3 Manual copy/paste Important カスタムURI と ルーブバック IP アドレスのほうが信頼性が高く、セキュアであるし、ユーザーフレンドリな方法になる。この方法は将来的にサポートしないかもしれない。 この方法では、HTMLページの title フィールドに認証コードを載せる。ユーザーがマニュアルでコピーをする。 Traditionally, apps that used this option programmatically extracted the authorization code from the HTML page. The copy/paste option served as a fallback in case the value could not be parsed. 推奨適用先 自動リダイレクトなどを備えていないプラットフォームのもの。テレビとか。 Form values Other Option 4 Programmatic extraction Important 手動コピー・ペーストだが、認証コードのコピー・ペーストを指示できないもの。代わりに、認証ページ側で、ユーザーにウィンドウを閉じるように指示する。 ※非推奨、組込ブラウザや web-view 用。 ▸See programmatic extraction details アクセススコープを確認する(Identify access scopes) Scopes enable your application to only request access to the resources that it needs while also enabling users to control the amount of access that they grant to your application. Thus, there may be an inverse relationship between the number of scopes requested and the likelihood of obtaining user consent. Before you start implementing OAuth 2.0 authorization, we recommend that you identify the scopes that your app will need permission to access. The OAuth 2.0 API Scopes document contains a full list of scopes that you might use to access Google APIs. Note Incremental authorization is not supported for installed apps or devices. アクセストークンの受け取り方(Obtaining OAuth 2.0 access tokens) The following steps show how your application interacts with Google s OAuth 2.0 server to obtain a user s consent to perform an API request on the user s behalf. Your application must have that consent before it can execute a Google API request that requires user authorization. Step 1 Google OAuth 2.0 サーバーにリクエストを送る Step 1 Google OAuth 2.0 サーバーにリクエストを送る(Send a request to Google's OAuth 2.0 server) Google s authorization server にリクエストを送るhttps //accounts.google.com/o/oauth2/v2/auth. This endpoint handles active session lookup, authenticates the user, and obtains user consent. The endpoint is only accessible over SSL, and it refuses HTTP (non-SSL) connections. サンプル(Sample authorization URLs) The URLs are identical except for the value of the redirect_uri parameter. The URLs also contain the required response_type and client_id parameters as well as the optional state parameter. Each URL contains line breaks and spaces for readability. CUSTOM URI SCHEMEの場合 https //accounts.google.com/o/oauth2/v2/auth ?scope=email%20profile response_type=code state=security_token%3D138r5719ru3e1%26url%3Dhttps //oauth2.example.com/token redirect_uri=com.example.app /oauth2redirect client_id=client_id パラメータ 認証では、組込アプリに対して、以下のクエリ文字列パラメータを扱う パラメータ client_id 必須 アプリケーションの client ID。API コンソールで見られる。 redirect_uri 必須 認証後のリダイレクト先 The table below shows the appropriate redirect_uri parameter value for each method redirect_uri values Custom URI scheme com.example.app redirect_uri_pathcom.example.app は管理下にあるドメインの DNS 表記の逆順。The custom scheme must contain a period to be valid.redirect_uri_path は /oauth2redirect のような任意のパス。パスはシングルスラッシュ "/" で始めること。 Loopback IP address http //127.0.0.1 port or http //[ 1] port -Query your platform for the relevant loopback IP address and start an HTTP listener on a random available port. Substitute port with the -actual port number your app is listening on. Manual copy/paste urn ietf wg oauth 2.0 oob Programmatic extraction urn ietf wg oauth 2.0 oob auto response_type 必須 code にする。Google OAuth 2.0 endpoint が認証コードを返すかどうか、を決定している scope 必須 アプリケーションがアクセスするユーザー情報。Google の確認画面で表示される。半角スペースで区切られたリストで指定する。The OAuth 2.0 API Scopes に scope の種類情報あり。 state 推奨 Specifies any string value that your application uses to maintain state between your authorization request and the authorization server s response. The server returns the exact value that you send as a name=value pair in the hash (#) fragment of the redirect_uri after the user consents to or denies your application s access request.You can use this parameter for several purposes, such as directing the user to the correct resource in your application, sending nonces, and mitigating cross-site request forgery. Since your redirect_uri can be guessed, using a state value can increase your assurance that an incoming connection is the result of an authentication request. If you generate a random string or encode the hash of a cookie or another value that captures the client s state, you can validate the response to additionally ensure that the request and response originated in the same browser, providing protection against attacks such as cross-site request forgery. See the OpenID Connect documentation for an example of how to create and confirm a state token. login_hint 任意 If your application knows which user is trying to authenticate, it can use this parameter to provide a hint to the Google Authentication Server. The server uses the hint to simplify the login flow either by prefilling the email field in the sign-in form or by selecting the appropriate multi-login session. Set the parameter value to an email address or sub identifier. Note Due to the fact that the client cannot keep the client_secret confidential, you cannot do incremental authorization with installed apps. Step 2 Google prompts user for consent このステップで、ユーザーがアプリケーションのアクセス要求を受け入れるかどうか決める。このステージで、 Google は確認ウィンドウを表示し、 Google API はユーザーの認証証明書とともにアクセスする権限を提供する。ユーザーはアプリケーションのアクセスを承認するか拒否するか決める。 Your application doesn t need to do anything at this stage as it waits for the response from Google s OAuth 2.0 server indicating whether the access was granted. That response is explained in the following step. Step 3 Handle the OAuth 2.0 server response アプリケーションが認証レスポンスを受ける方法は、これを扱うリダイレクトURIスキームに依存する。スキームによらず、レスポンスは認証コードかエラーを含む。たとえば、 error=access_denied なら要求が拒否されたことを示す。もし、ユーザーがアクセスを許可したら、認証コードをアクセストークンと交換し、リフレッシュトークン(後述)を受け取る。 Step 4 認証コードとトークンを交換する (Exchange authorization code for refresh and access tokens) 認証コードとアクセストークンを交換するために https //www.googleapis.com/oauth2/v4/token に次のパラメタをセットし送る。 Fields code 最初に受け取った code client_id API Console で確認したクライアントID client_secret API Console で受け取った Client Secred。ただし、Android, iOS, Chrome applications では不要。 redirect_uri One of the redirect URIs listed for your project in the API Console. grant_type authorization_code. The following snippet shows a sample request POST /oauth2/v4/token HTTP/1.1 Host www.googleapis.com Content-Type application/x-www-form-urlencoded code=4/P7q7W91a-oMsCeLvIaQm6bTrgtp7 client_id=your_client_id client_secret=your_client_secret redirect_uri=https //oauth2.example.com/code grant_type=authorization_code Google responds to this request by returning a JSON object that contains a short-lived access token and a refresh token. The response contains the following fields Fields access_tokenThe token that your application sends to authorize a Google API request. id_tokenNote This property is only returned if your request included an identity scope, such as openid, profile, or email. The value is a JSON Web Token (JWT) that contains digitally signed identity information about the user. refresh_tokenA token that you can use to obtain a new access token. Refresh tokens are valid until the user revokes access. Note that refresh tokens are always returned for installed applications. expires_inThe remaining lifetime of the access token in seconds. token_typeThe type of token returned. At this time, this field s value is always set to Bearer. Important Your application should store both tokens in a secure, long-lived location that is accessible between different invocations of your application. The refresh token enables your application to obtain a new access token if the one that you have expires. As such, if your application loses the refresh token, the user will need to repeat the OAuth 2.0 consent flow so that your application can obtain a new refresh token. レスポンスサンプル { "access_token" "1/fFAGRNJru1FTz70BzhT3Zg", "expires_in" 3920, "token_type" "Bearer", "refresh_token" "1/xEoDL4iW3cxlI7yDbSRFYNG01kVKM2C-259HOF2aQbI" } 関係ないレスポンスは無視してよし Calling Google APIs After your application obtains an access token, you can use the token to make calls to a Google API on behalf of a given user account or service account. To do this, include the access token in a request to the API by including either an access_token query parameter or an Authorization Bearer HTTP header. When possible, the HTTP header is preferable, because query strings tend to be visible in server logs. In most cases you can use a client library to set up your calls to Google APIs (for example, when calling the Drive API). You can try out all the Google APIs and view their scopes at the OAuth 2.0 Playground. HTTP GET examples A call to the drive.files endpoint (the Drive API) using the Authorization Bearer HTTP header might look like the following. Note that you need to specify your own access token GET /drive/v2/files HTTP/1.1 Authorization Bearer access_token Host www.googleapis.com/ Here is a call to the same API for the authenticated user using the access_token query string parameter GET https //www.googleapis.com/drive/v2/files?access_token= access_token curl examples You can test these commands with the curl command-line application. Here s an example that uses the HTTP header option (preferred) curl -H "Authorization Bearer access_token " https //www.googleapis.com/drive/v2/files Or, alternatively, the query string parameter option curl https //www.googleapis.com/drive/v2/files?access_token= access_token Refreshing an access token Access tokens periodically expire. You can refresh an access token without prompting the user for permission (including when the user is not present) if you requested offline access to the scopes associated with the token. To refresh an access token, your application sends an HTTPS POST request to Google s authorization server (https //www.googleapis.com/oauth2/v4/token) that includes the following parameters Fields refresh_tokenThe refresh token returned from the authorization code exchange. client_idThe client ID obtained from the API Console. client_secretThe client secret obtained from the API Console. (The client_secret is not applicable to requests from clients registered as Android, iOS, or Chrome applications.) grant_typeAs defined in the OAuth 2.0 specification, this field must contain a value of refresh_token. The following snippet shows a sample request POST /oauth2/v4/token HTTP/1.1 Host www.googleapis.com Content-Type application/x-www-form-urlencoded client_id= your_client_id client_secret= your_client_secret refresh_token= refresh_token grant_type=refresh_token As long as the user has not revoked the access granted to the application, the token server returns a JSON object that contains a new access token. The following snippet shows a sample response { "access_token" "1/fFAGRNJru1FTz70BzhT3Zg", "expires_in" 3920, "token_type" "Bearer" } Note that there are limits on the number of refresh tokens that will be issued; one limit per client/user combination, and another per user across all clients. You should save refresh tokens in long-term storage and continue to use them as long as they remain valid. If your application requests too many refresh tokens, it may run into these limits, in which case older refresh tokens will stop working. Revoking a token In some cases a user may wish to revoke access given to an application. A user can revoke access by visiting Account Settings. It is also possible for an application to programmatically revoke the access given to it. Programmatic revocation is important in instances where a user unsubscribes or removes an application. In other words, part of the removal process can include an API request to ensure the permissions granted to the application are removed. To programmatically revoke a token, your application makes a request to https //accounts.google.com/o/oauth2/revoke and includes the token as a parameter curl -H "Content-type application/x-www-form-urlencoded" \ https //accounts.google.com/o/oauth2/revoke?token={token} The token can be an access token or a refresh token. If the token is an access token and it has a corresponding refresh token, the refresh token will also be revoked. If the revocation is successfully processed, then the status code of the response is 200. For error conditions, a status code 400 is returned along with an error code. Note Following a successful revocation response, it might take some time before the revocation has full effect. Further Reading The Internet-Draft Best Current Practice OAuth 2.0 for Native Apps establishes many of the best practices documented here. Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 3.0 License, and code samples are licensed under the Apache 2.0 License. For details, see our Site Policies. Java is a registered trademark of Oracle and/or its affiliates. AndroidでGoogle認証の準備をする プロジェクトを作る Projectを作る どのAPIを使うのか(とりあえず) * OAuth2.0 を使って Google APIs にアクセスするアプリケーションはアプリ特定するための認証証明書が必要。プロジェクトに証明書を作成するステップを説明(すでにプロジェクトがある前提) API Console の認証情報ページを開き 「認証情報を作成」 「Oauth クライアント ID」 フォームを埋める。この部分は、Google の認証がサポートするリダイレクト方法を記述する。アプリケーションに対し推奨される方法を一つ選び、適切な内容を記述する。 SHA-1 fingerprint を取得する Projectで、認証キーの発行に必要になる SHA-1 fingerprint を取得する debug.keystoreの場所を確認する通常は /Users/{ユーザー名}/.android/debug.keystore JDKのbinフォルダに移動する(か、環境変数のパスを仕込んでおく) keytool -list -v -keystore "/Users/{ユーザー名}/.android/debug.keystore" -alias androiddebugkey -storepass android -keypass androidパスワードを求められたら android を入力
https://w.atwiki.jp/okoba23/pages/8.html
Google Maps API document Google Maps API Version 2 Documentation まずは ■API Keyの取得。 このKEYを取得しないと始まりません。 Googleアカウント(無料)さえ持っていれば使用可能。 初心者なら問題ないけど、PV(PageView)が50万PV/dayを超える場合には、 enterprise契約が必要。これで一儲けたくらんでる方は、契約を。 Sign upページはこちら(英語) Maps APIを使う ■貼り付ける。 Googleアカウントと無料HPさえ持っていれば、即使用可能。 上記Sign upページで即効KEYも、貼り付けるscriptも 入手可能です。 所要時間5秒。。。 ただ貼り付けただけのN.Y. 解説 ■タグ - javascriptに追記 script src="http //maps.google.com/maps?file=api amp;v=2 amp; key=発行される自分のKEY" type="text/javascript" /script script type="text/javascript" // ![CDATA[ function load() { if (GBrowserIsCompatible()) { var map = new GMap2(document.getElementById("map")); map.setCenter(new GLatLng(37.4419, -122.1419), 13); } } //]] /script - htmlに追記 div id="map" style="width 500px; height 400px" /div ----------------------------------------------------------- 実際に発行するpageにも書いてありますが、javascriptについては head部に記載し、div要素をbody部に記載する事で表示します。 -div属性: width 高さ height 横幅 -src属性: 自分に発行されたKEY -map.setCenterメソッド:地図の中心点の経度と緯度を指定 ポイントの移動 function load() { if (GBrowserIsCompatible()) { var map = new GMap2(document.getElementById("map")); map.setCenter(new GLatLng(37.4419, -122.1419), 13); window.setTimeout(function() { map.panTo(new GLatLng(37.4569, -122.1569)); }, 5000); } ----------------------------------------------------------- window.setTimeoutメソッド内でポイント移動の記述を追加。 map.panToメソッド:ポイントの移動記述と、time値を設定 GLatLngでmap.setCenterメソッドと同じように座標を設定。 最後のカラムで次ポイント移動の時間を設定(ms) map movement animation control追加 map.addControl(new GSmallMapControl()); map.addControl(new GMapTypeControl()); ----------------------------------------------------------- GSmallMapControl 拡大・縮小 GMapTypeControl 地図・写真・地図&写真の3type add control 経度・緯度表示 - javascriptに追記 GEvent.addListener(map, "moveend", function() { var center = map.getCenter(); document.getElementById("message").innerHTML = center.toString(); }); - htmlに追記 div id="message" /div ----------------------------------------------------------- 経度・緯度の表示ができる。これで、defaultの位置設定で使える。 map.setCenterで設定。 view latitude longitude メッセージ表示 - javascriptに追記 map.openInfoWindow(map.getCenter(), document.createTextNode("Hello, world")); ----------------------------------------------------------- 指定されたポイントでメッセージを表示。 map.getCenterメソッドでポイントを受け取る。 view message window
https://w.atwiki.jp/bullet37/pages/100.html
ModDBに公開されているものをマトメています。 ベースにしている一覧 https //spreadsheets.google.com/ccc?key=tA_fxfg792kKyoGAJDt9IsA hl=ja authkey=CJexxa0C#gid=0
https://w.atwiki.jp/peercastxbox-danisen/pages/15.html
段位一覧 GoogleDocs https //docs.google.com/spreadsheet/ccc?key=0AthQLQnfJAisdENGcnowZ0NOdms2TVpmQWpZQlRzNlE hl=ja
https://w.atwiki.jp/vipdetrpg/pages/588.html
自作TRPGアルカナギディオンのテストプレイもかねたセッション アルカナギディオンのルールブックは以下からダウンロード http //zumtrpg.main.jp/ArcanaGideon.pdf 浅葱・ʺシューネシュヴァルツʺ・黒衣 剣 https //docs.google.com/spreadsheets/d/1YDJxHz3kv6wYM17E3WXZQQTX0Vq4HnmD9somzFlr_5Q/edit?usp=sharing 佐山 朱里 宝 https //docs.google.com/spreadsheets/d/14X_k0wrs55zLKnMfh1GiA2tzxnDKUofKVzm8kLkLHX0/edit?usp=sharing レイブン 杖 https //docs.google.com/spreadsheets/d/1fH_QFgDgO7BEvjbwII2Qzde-vsJ5u1XgzLEJXKh2UCQ/edit?usp=sharing 相羽 奈那 聖 https //docs.google.com/spreadsheets/d/195uv0h1sQQzoyS3i1oBYJOmzL8p3OSuN4r2TfflQlmE/edit?usp=sharing ログファイル 2015/3/19 htmlログ
https://w.atwiki.jp/earthquakeinfo_en/pages/30.html
These websites provide information on where to obtain water and food. Also, whereabouts of toilets, petrol stations and mobile phone recharge stations are on the map. -Spreadsheet (This list cannot be viewed from a normal mobile phone. (requires permission to access) Please view these by PC or Smartphones.) http //spreadsheets.google.com/ccc?hl=ja key=tlak92xLUL5vNf_3o-ttTqQ hl=ja#gid=0 For mobiles(Japanese only) http //resource-info.appspot.com/view/ -Google Map Pins(This is a different information to what is listed on the above spreadsheet.) For PC Eastern Japan Miyagi Area Fukushima Area Ibaragi Area Tochigi Area Aomori Area Iwate Area Yamagata Arae Mobile search engine (Currently Japanese only, so if you cannot read Japanese please ask people around you) http //goo.gl/Fp7I4
https://w.atwiki.jp/voice/pages/24.html
Googleの音声入力についてのページ <このページの記載ルール> ※改変可。守らない自由有り。 ルールが無いと書きにくい方もいると思うので記載しています。 正直に。 - 間違えるのはやむなし。 - 情報が古くなるのも仕方なし。 できるだけタイトルに関連することのみ書く。 タイトル以外のことは他のページに飛ばす 画像アップロード方法 Googleの音声入力概要 2020-07-19更新 Googleの音声入力は、以下のいずれかで利用できます。 デフォルトはGboardが入っているAndroidスマートフォンが多いと思います。 Gboard Google日本語入力 Google音声入力 操作方法 Android スマートフォンまたはタブレットで Gboard をインストールします。 Gmail や Keep のようなテキストを入力できるアプリを開きます。 テキストを入力する場所をタップします。 キーボードの上部にあるマイクアイコンを長押しします。 「お話しください」と表示されたら、入力する内容を話します。 https //support.google.com/gboard/answer/2781851?co=GENIE.Platform%3DAndroid hl=ja Googleの音声入力の特徴 良いところ 無料で使えるわりに音声入力の精度が良い。 良くない所 句読点の手動入力機能は日本語非対応。 iPhoneだと標準以外のキーボードは若干モタつく?(※1) パソコンではGoogleドキュメント以外では使えない。(※2) (※1)iPhone6Sでの感想。最新機種では未確認。 iPhoneにもGboard入れれば利用できる https //support.google.com/gboard/answer/2781851?co=GENIE.Platform%3DiOS hl=ja oco=1 (※2)リモートマウスというアプリを入れると、スマートフォンからPCを操作、文字入力もできるのでそれを利用して入れることは可能。 が、音声入力は変な入力され方になることがあった。ここ半年は動作未確認。 iOS App Store https //apps.apple.com/jp/app/remote-mouse/id385894596 Android Google play https //play.google.com/store/apps/details?id=com.hungrybolo.remotemouseandroid hl=ja Microsoft https //www.microsoft.com/ja-jp/p/remote-mouse/9nt1p1xw3k9j Googleの音声入力が使える環境 iOS(iPhone/iPad) Android Googleドキュメントを使ってWindows/Macから入力可能 Chromebook。(※1) (※1)ユーザー補助機能の設定でソフトウェアキーボード表示すれば使える Simejiが動かない環境 Googleドキュメント以外のPC/Mac 参考記事 Windows で Google 音声入力をAndoridスマートフォンなしでする方法 https //note.com/haruki_hinata/n/n9d3cc7466169 ↑VoiceInを使った方法でした。 圧倒的な精度が魅力!Google音声入力をMacでも使用する方法 https //freesworder.net/mac-google-voice-to-text/ Mac Book でGoogle ドキュメントを使いたい https //support.google.com/googleplay/thread/4598094?hl=ja