投稿

ラベル(G Suite)が付いた投稿を表示しています

Googleスプレッドシートのimportxml関数で2つの越越辞書を自動取得して比較

イメージ
 過去に何度かGoogleスプレッドシートのimportxml関数を使った記事を書いた。 今回も同様にWeb上で使える辞書を自動検索してスプレッドシートに取り込もうというのが趣旨。 当初はWiktionaryをAPIで呼び出す計画であった。 しかし、やってみると意外と苦戦した。 WiktionaryはWikipediaAPIと同じ仕様なので記事タイトルなどは簡単に取得できたが、記事の内容は構造が複雑で、単語によって構造が違う為一律のルールで取得する事は出来なかった。 なので、Wiktionaryからデータを取得するのは諦めた。 その後はベトナム語の辞書サイトでviệt-việt (ベトベト、越越)があるサイトを一つずつ取り込めるか試していった。 結果、2つのサイトから取り込むことが出来た。 なんで越日(ベトナム語→日本語)ではなく越越(ベトナム語→ベトナム語)辞書なのかというと、越日の場合、収録語数が少ないからである。 ただ越越辞書を取得するだけでは面白くないのでGoogleスプレッドシートのgoogletranslate関数で同時に日本語訳を表示するようにした。 ここでは、以前作成した自作関数ではなく、Googleスプレッドシート標準の翻訳関数を用いている。 正直、標準の翻訳関数は翻訳精度が低いので精度の改善のためには以前作成した翻訳関数を使うか、みんなの自動翻訳を呼び出す新しい関数を作るべきだと思う。 だが、まぁ越越辞書を頑張って読むのも勉強になるから日本語訳は補足だと思えばそれほど翻訳精度を気にする必要はない。 辞書サイトを直接使ってももちろん調べられるのだけど、2つの辞書サイトから自動取得することで、一回の検索で2種類の説明が見られること、自動で日本語訳も出るので、意味がわからないときの補足になる事が多少のメリットであろうか。 今回ちょっと苦労したのはサイトによっては例文が異なるhtml構造になっていて、その為にxpathを複数記述する必要があったこと。 まぁxpathの複数記述は以前のimportxml関数の記事でも書いたと思うのでここであんまり記してもしょうがないのだけど、2つのimportxml関数はこのように記述した。 #1 =IMPORTXML("http://tratu.coviet.vn/hoc-tieng-anh/tu-dien/l...

自分の単語帳を作る場所は検索精度で選ぶべきか?

イメージ
 言語学習において自分の単語帳を作るのがおすすめであると昔読んだ本に書いてあった。 確かに自分がレッスンで教えてもらった単語は教えてもらった用例と一緒に残すことで記憶に残りやすいし、忘れても後から確認することが出来る。 単語帳は紙のノートで作ることも出来るが、いつでもどこでも調べたい、確認したいと思うならクラウドベースのサービスに作成しておくべきだろう。 そこで手っ取り早く思いつくのはGoogleスプレッドシートになるだろう。 本格的なデータベースに記録してもよいが、表計算ソフトであるスプレッドシートなら気軽に誰でも利用できるし、GoogleスプレッドシートにはQuery関数というスプレッドシートを簡易データベースのように利用できる独自関数が用意されている。 Googleスプレッドシートなら出先でモバイルアプリからアクセスしても高速だし、家にいる時はPCからキーボードで入力すれば単語登録は素早く行える。 単語帳の記録場所として最適かと思えた。 ドキュメントと検索の比較をするまでは・・・。 Query関数を使ったような検索ではなく、普通にメニューに存在する「検索と置換」機能で検索した場合、スプレッドシートだとセルが選ばれるだけで、単語自体が選択されるわけではない。 一つのセルにたくさん文字が入っている場合、検索した単語がどこにあるかわかりにくい。 これらの単語をGoogleドキュメントに貼り付けて、同様に「検索と置換」で「đồ」を検索してみるとこの様になる。 「đồ」が含まれる3ヶ所で該当文字がわかるようにマークされている。 ぱっと見て、ドキュメントのほうが文字列検索した時の表示がわかりやすい事がはっきりわかる。 それに加えてスプレッドシートには無いチェックボックス、「ラテン文字の発音区分記号を無視する」が存在する。 これは前回の電子書籍についての記事でも少し触れたが、記号を入力できない環境や、記号を正確に覚えていない時は無視するをチェックすれば検索出来るし、正確に記憶している場合は無視するのチェックを外せば正しい検索結果になる。 状況に応じて適切な検索が可能になる便利な機能であり、スプレッドシートにはこれが無いので、この点でもドキュメントの方が優れている。 正規表現での検索 Googleドキュメント、スプレッドシートともに「検索と置換」のチェックボックスに「...

ChromebookのLinux環境が正式になった件

イメージ
 ChromebookというかChrome OSでは数年前からLinuxを動かす環境が実装されていたがベータ版という扱いであった。  最近になってベータ版という表記が消えたので正式にChromeOSの機能となったようだ。 ChromeOSとは  昨年あたりから日本でも主に教育市場においてChromeOSを搭載したノートパソコンChromebookが売れまくっており競合であるiPadとWindowsを大きく上回るシェアを獲得したので、そっちの方面ではかなり知られるようになった。  その影響で自分用に購入する人も増えてきているように思える。  さて、そのChromeOSの基本コンセプトはChromeブラウザのみのOSであった。  であったというのは、その後に機能が追加されてAndroidアプリが動くようになったり、今回の主題であるLinuxアプリが動くようになったからブラウザのみではなくなった。  しかし、基本コンセプトはChromeブラウザのみでGoogle Workspaceのようにブラウザで動くWebアプリで全てを処理するというものである。  このコンセプトは処理のほとんどをサーバー側が行うので端末に高性能なCPUやメモリ、ストレージを必要としない。  この為、ChromeOS搭載端末は非力なCPUかつ16GByte程度の少しのストレージしか搭載していなくても問題なく使用できた。  アプリをインストールすることがない為、アプリのアップデートに時間がかかることもなく、起動も軽快で快適に使用することが出来た。  また、ほとんどのデータがクラウド上にあり、Googleの最高のセキュリティによって守られている事も重要で、うっかり端末を紛失しても端末上には何もデータがないので極めて安全であった。  ChromeOSのこのコンセプトは安全かつ高速、使いたい時にいつでも素早く使えるというメリットを持っていた。また非力なハードでもなんの問題もないので安価に購入できるというメリットもあった。端末価格は3万円程度でキビキビと動くマシンが手に入るのである。  主に教育市場で普及が始まったChromeOSはハードウェアの管理の容易さも普及した要因の一つであろう。  複数のアプリの管理を必要としないコンセプトは技術者不要で管理を行うことが出来る。  セットアップにかかる工数も0に近...

Googleスプレッドシートのimportxml関数をhtmlに使う

イメージ
 importxml関数は前回記したようにxmlを出力するAPIを利用することが出来る。前回の記事『 Googleスプレッドシートのimportxml関数でWikipedia API(単語の各言語表記を取得) 』 Googleスプレッドシートにはimporthtmlという関数もあるが、こちらはhtml内にある表やリストを指定して取得する関数であり、使いみちが限られる。(まともに使ったことがないので詳細不明) htmlに対しての利用 importxml関数はhtmlに対しても使用できる。 例えば前回APIで取得したWikipediaの情報をAPIを使わずにhtmlから直接取得してしまうことも出来る。(通常APIを用意してあるサイトはAPIを用いて取得すべきなので、これはあくまで例として掲載しているのみであり、APIが用意されているサイトをhtmlでの取得はしないほうが良い) =IMPORTXML("https://ja.wikipedia.org/wiki/"&B6&"","//title") この例だとB6セルに入力したWikipediaの記事名のページからxpath でtitleタグを取得するよう指定しており。ページのタイトルが取得される =JOIN("",IMPORTXML("https://ja.wikipedia.org/wiki/"&B6&"","//*[@id='mw-content-text']/div[1]/p[1]")) さらに、このように指定すると、記事の要約も取得出来る。 JOIN関数で囲んでいるのは記事が複数の段落になっている場合があるためである。xpathで段落<p>タグを指定している為、複数ある場合配列となり、複数セルに展開される。 複数セルに展開したほうが良い場合はJOINで囲む必要はないが、文章が一つのセルに収まってほしい場合はこのようにJOIN関数で配列を一つのテキストにする。 こちらの画像ではLinuxを入力した行とUbuntuを入力した行の2行があり、それぞれtitleと要約を取得しているので計4つのimportxml関数を指定した...

Googleスプレッドシートのimportxml関数でWikipedia API(単語の各言語表記を取得)

イメージ
 Googleスプレッドシートには他の表計算ソフトには無い独自の関数が多くある。 特に以前取り上げたtranslate(翻訳)関数や通貨レートをとってくるGoogleFinance関数(※)など、さすがインターネットと共に成長したGoogleと思わせるインターネットを利用した関数が特徴的である。 ※=A5*GoogleFinance("currency:JPYVND", "average")  このようにすると日本円をベトナムドンに換算して表示してくれる。VNDJPYにすればベトナムドンを日本円に換算する。USDを指定すれば米ドルとなる。 その中で汎用的に様々な目的に使えて便利だが、ちょっと癖のあるimportxmlについて、自分の備忘録的に記しておくことにする。 importxmlはその名の通りxmlをインポートする事が目的となっているが、htmlでもxpathを指定する事で指定した要素を取得してセルに挿入できる。 例えばxml形式で返ってくるAPIを利用してスプレッドシートにデータを挿入するというのは一般的な活用方法だと思われる XMLの取得 まずは、htmlではなく、APIからxmlを取得する例を記しておく。 私が3年前に作成したが、既に自分は存在を忘れかけていた、WikipediaAPIを使って特定の単語の各言語表記を自動取得するスプレッドシートを見てもらいたい。 Wikipediaから多言語取得 利用方法 このスプレッドシートはA2セルになんらかの単語を入れると、その単語の各言語表記をWikipediaの記事タイトルから取得する仕組みとなっている。 シートはロックされているがA2セルはロックから除外しているので自由に単語を入れて使ってもらいたい。 コピーして使ってもらっても構わない。Googleスプレッドシートは誰でも無料で使えるので気軽に試してほしい。 実に単純な仕組みだがそこそこ便利だと思う。 A2にドラえもんと入力するとA3以降に各言語の表記が自動表示される 利用方法としてはA2に単語を入れるのみであるが、入れた単語がWikipedia日本語版の記事タイトルと完全一致しないと各言語表記は表示されない。 例えば「ドラえもん」は問題ないが「ヤマト」だと各言語表記は表示されない。 こうした場合に正しい記事タイトルがす...

無限の終焉とその先へ(Googleフォト、ドキュメントほか)

 一週間くらい前から何かよくわからない不安に取り憑かれていた。 きっと急に気温が下がってきて、季節の変わり目故に寒さを強く感じ、それが不安な心を作っているのだと思っていた。 一週間前にベトナム語の復習をしていた時も、いつものようにレッスン動画をGoogleフォトにアップロードし、いつものようにGoogleドキュメントにメモなどの情報を集約させていて、ふと、「はて、Googleフォトもドキュメントも無限に際限なく無料で使えるけど、これがサービス終了したらどうなってしまうのだろう?」と思った。 そう、私は順調に進みすぎている事に違和を感じていたのかもしれない。 そしてその時はきた 11月12日 その日は朝からとんでもなく仕事が荒れた日だった。 これは個人的なブログなので仕事の詳細には触れないが、数十の国からのサイバー攻撃を受けて大変な目にあった。 それがなんとか収束しそうだった時に、衝撃的なニュースが入ってきた。 見出しは「Googleフォト、「高画質」での容量無制限終了へ…」 一瞬目を疑いたくなる内容であった。 詳細を読んで見ると更に愕然とする事実が記されていた。 「6月1日からGoogleDrive(Google ドキュメント、スプレッドシート、スライドの新規作成)などでも容量を消費するようになる」 そう、無限に際限なく無料で使える事で私が愛用しているGoogleサービスが来年6月から一斉に容量を消費するようになるという事であった。 これまでGoogleはこれらのサービスはいくら利用してもGoogleドライブの容量を消費しないという事を売りにしていたわけであるから、大きな方針転換である。 一週間くらい前からなんとなく感じてた不安は的中した。 Google Japan Blog Google アカウントのストレージポリシー変更について 私は以前オンラインレッスンを活用する記事をこのブログに記した。「 私的ベトナム語オンラインレッスン『VVレッスン』活用法 」 この記事ではドキュメントやフォトがいくら使ってもドライブ容量を消費しないのでどんどん活用しようという内容になっている。 どんなにたくさん使っても無料 無限に際限なく無料で使える そう、こんなうまい話が際限なく続くわけはなかったのだ。 利用中にバナー広告どころかテキスト広告すら出ないのであるからサービス単体...

Googleデータポータルの計算フィールドで条件分岐にはまる

Googleデータポータルには計算フィールドがある。 CASE文による条件分岐も可能である。 なので、以下の問題を簡単に解決できると思っていた。 あるフィールドに数字が12桁入っている場合最後の3桁を除いた先頭9桁を抽出する 同じフィールドにアルファベットを含む文字列が入っていた場合は小文字にするだけで桁数は変更しない CASE     WHEN REGEXP_MATCH(SKU, '^([0-9]{12}$')     THEN LEFT_TEXT(SKU,9)     ELSE LOWER(SKU) END  まぁこんな感じで楽勝と思っていた。  しかしやってみるとエラーで使えない。  データポータルのCASE文ではTHENやELSEに数式や関数を含めることが出来ないとの事。  え?  それじゃあ分岐しても出来ることが限られる。  この仕様を回避するためにはTHENの結果とELSEの結果をあらかじめ計算フィールドで作っておいて呼び出す必要がある。  そうすると目的を達成するためには三つの計算フィールドが必要になってしまう。  こんな単純な処理を実現するために三つも計算フィールドを作るのはなんか変な感じがする。それほど大変な作業ではないけど、無闇にフィールドが増えるのは管理が煩雑になる。  なのでなんとか他の方法で解決できないか考えてみた。  REGEXP_REPLACE関数でなんとかなるような気がした  こんな感じで数字12桁の時は9桁に削る   regexp_replace(SKU,'^([0-9]{9})([0-9]{3}$)','\\1')  いける気がしたが、計算フィールドにはregexp_replaceは一つしか設置出来ないようで文字列が含まれる場合に対応できないのと、そもそも置換文字列にフィールドや関数を含めることは出来ないっぽい  上の9桁に削る例でもleft_text関数とフィールドではなく、先頭9文字をキャプチャーして利用している。  まぁこれでこの計算フィールドにlower関数を行うだけの計算フィールドを作れば計算フィールドの数は2に削減される。三つ作るよりはマシか。  精度を無視すればlower(left_text(SKU,9))で、一つの計算フィールドですんでしまうんだけど、これの...

私的ベトナム語オンラインレッスン『VVレッスン』活用法

イメージ
ベトナム語オンラインレッスン『 VVレッスン 』を利用するようになって既に2ヶ月以上が経過した。 数週間前に他の受講者からレッスン内容を録画する事が出来て便利であると教えてもらい、そこからはレッスンの内容を録画するようにしている。 録画方法はiPhoneの機能で録画してもいいし、Skypeの機能で録画してもいい。 今の所教えてもらったSkypeの機能での録画を行っている。 Skypeの機能で録画した場合、保存期間は30日となっていて、30日を超えると視聴出来なくなる。 だが、ダウンロードできるので消える前にダウンロードすれば失われることはない。 ダウンロードした動画ファイルはmp4形式となっている。 ダウンロードしたファイルはそのままでも見ることが出来るが、私は Googleフォト にアップロードすることにした。 Googleフォトは無制限で容量を気にすることなく写真を保管出来るサービスであるが、動画も無制限で保管できる。 なのでいくらでもアップロードできるし保管期限といった制限もないので安心である。 そしてGoogleフォトはスマートフォンからでもタブレットからでも各種PCからでもスムーズに閲覧できるので自宅にいようと外出していようと関係なく時と場所を選ばずにレッスン内容の確認が出来る。 さらにSkypeのチャットで先生が送ってくれた単語はGoogleドキュメントに貼り付ける。 ドキュメントはレッスンごとに作成し、そこにチャット内容と、その時自分が思った事をメモしておく。 ドキュメンからGoogleフォトのレッスン動画へのリンクを張っておく事でスムーズにアドバイス内容の確認とレッスンの視聴が行えるようになる。 Googleドキュメントもまたいくら利用しても一切料金は発生せず、容量を気にすることなく利用できる。(Googleドライブ上に通常のテキストファイルや画像、動画などを保存するとドライブの容量を消費するがGoogleドキュメントはいくら作っても容量を消費しない。ドキュメントに画像を埋め込んでも容量は0である) 先生に送った本の画像もドキュメントに貼り付けておけば見返した時にとてもわかりやすい。 レッスンに使った本の画像と先生のアドバイス ローカルのディスク容量を気にする事なくクラウド上で完結させるとディスクの管理も不要...

『ごっつ三国』組み合わせ確認スプレッドシートを作ってみた

イメージ
ごっつ三国のキャラ組み合わせを確認するためのスプレッドシートを作ってみた。 これは以前作ったキャラデータ確認画面のデータソースになっているスプレッドシートをImportrange関数で参照する仕組みとなっている。 あのデータは あるしさん ( Youtube )と おとうぴー さん( ブログ )の協力によって増加したものであるので、改めてお二人に感謝したい。 組み合わせ確認用スプレッドシート ◇使用方法1 1人の組み合わせを確認 上の方の登録名(A2)をクリックするとプルダウンメニューになっているのでキャラを選ぶことができる。 キャラを選ぶと右側にそのキャラの組み合わせが表示され、組み合わせに含まれるキャラも同時に表示される。 但し、…の末裔と女人天下は表示しないようにしている ◇使用方法2 2人の組み合わせを確認 下の方の登録名(A17)も同様にプルダウンメニューからキャラを選択する。 すると上と同様に組み合わせと含まれるキャラが表示される。 さらに下の方に組み合わせがカウントされ、両方の組み合わせに含まれる共通項のキャラが表示される。 この例だと楽進と曹仁に直接の組み合わせは存在しないので組み合わせカウントは0 共通項で荀攸、徐晃、張遼、于禁、李典が表示される。 直接の組み合わせはないが、この共通項キャラを編成に入れることで両者に組み合わせが出来る事がわかるようになっている。 このスプレッドシートは自由に使っていただいて構わない。 注意点としては、Googleスプレッドシートは同時編集が可能で便利なのだが、データを確認するときは他の人が確認しているとわかったら他の人の操作が終わるのを待って操作してほしい。 複製して自分用のスプレッドシートにして利用することも可能。注意点としては人名一覧シートと、組み合わせシートは実際のデータは入っていなくてimportrange関数で読み込んでいる。複製した場合、importrange関数の許可を行う必要があるので許可して利用してほしい。

Google データポータル:ごっつ三国キャラデータ確認画面

イメージ
Googleデータポータル(Google Data Studio)を使ってごっつ三国のキャラデータを確認できる画面を作ってみた。 ごっつ三国キャラデータ確認画面 元々の目的は武将対戦等で相手のキャラのスキルがわからないとどのお宝を装備すれば良いか判断できない事から、アプリの画面は武将対戦のままで情報を素早く確認できると便利だなと思ったから。 ただ、私は魏のデータを入れた時点で疲れてしまって、そこで誰か協力してくれないかなぁとTwitterで呟いたらあるしさんが協力してくれるということになり、蜀や呉などを入力してくれた。 その後、おとうぴーさんが自分のブログ用に入力したデータを提供してくれるという事になり、全ての国データが網羅された。 2人の協力によってデータが拡充されたのはとても素晴らしい事で、私一人では途中でやる気を失っていたと思う。 ただ、網羅されたのは基本的なデータであり、スキルデータの状態変化まで入っているのは魏のみなので、対戦相手のスキルを調べて、状態変化があればその状態変化に対する抵抗のお宝を装備するという目的はまだ実現できていない。 とは言え使いみちがないわけでもなくて、組み合わせでフィルターが出来るので、女人天下でフィルターすれば女性キャラだけに絞りこめるし、そこから、国やクラス、属性で絞り込むことで自分が求めている条件のキャラだけを容易に確認することが出来るようになっている。(組み合わせデータはまだ未入力の国があるので完全ではない) 策士かつ炎で検索してみるとこのように表示される 表のソート順はデフォルトが戦闘力になっているが、好きな項目のラベル部分をクリックするとその項目でソートすることが出来る。 アイテム獲得率でクリックすれば獲得率の高いキャラ順になるので、ここでクラスや属性で絞り込んで確認する事が出来る。 スキル発生状態や、連鎖状態で絞り込む機能は作ってあるものの、前述の通りでデータが不十分なので現状は魏のみしか機能しない。 スキルをスキルの種類、任意、打撃強化、連鎖などで絞り込む機能もデータ整備はこれからで現状はまだ実用段階に至っていない。 2ページ目はデータを確認できる円グラフになっている 属性を力で絞り込むとこのように、春秋が多く、魏がとても少ないことが視覚的にわかる。 3ページ目は以前作成した装...

『ごっつ三国』装備素材必要数自動計算スプレッドシート まとめ

イメージ
『あるし』さんが射手、君主、策士を一気にデータ作成してくれたので公開する! これで全てのクラスが網羅されたことになる。 猛将 勇将 射手 君主 策士 既に以前の記事で説明しているが、一応再度説明する。 このスプレッドシートは『ごっつ三国』の装備に必要な素材数を自動計算するものである。 現在所持数を入力すると残りの必要数が自動計算される。 特に制限はなく自由に使っていただきたい。 Googleスプレッドシート自体も無料なのでなんの費用もかからない。 PCはChrome等のブラウザさえあれば問題なく動作する。私はLinuxとChromebookでしか検証していないがMacでもWindowsでも動作するはずである。 モバイルデバイスの場合ブラウザのアクセスでは閲覧しかできず編集が出来ないので、モバイル向けのGoogleスプレッドシートアプリを予めインストールしておく必要がある。 モバイル向けのGoogleスプレッドシートアプリも無料なので費用はかからない。 スプレッドシートは複製して自分専用にして利用するのも問題ない。 但し、今後機能拡張が行われた場合は再度元のスプレッドシートにアクセスして複製しないと新しい機能は使えない。 なお、現状では☆7の装備にのみ対応しており、☆5、☆6に関しては一部のみの対応となっているが、今後増える予定である。 このスプレッドシートは『あるし』さんが考案し、私が原版を設計作成し、後はほとんど『あるし』さんが調査してデータを入れたものである。『あるし』さんはごっつ三国の軍団『半日天下』の団長なので、その事はお忘れなきよう。 ※調査には半日天下のメンバーが協力を行っていたとのこと。  半日天下の皆さんありがとうございました! 『あるし』さんのTwitter

『ごっつ三国』装備素材必要数自動計算スプレッドシート勇将編

イメージ
猛将編のスプレッドシートを元に『あるし』さんが勇将のデータを追加してくれたので公開する。 私はスプレッドシートの複製とか、シートの調整とかちょこっとしか作業をしていない。 以下のリンクでGoogleスプレッドシートに遷移する。 所持数を入力すると、残りの必要素材数が自動計算される。 ☆7天龍の槍 ☆7 暗黒の墨鉄槌 ☆7天龍の兜 ☆7天龍の鎧 iPhone,iPad,Androidの方は先にGoogleスプレッドシートアプリをインストールした上でリンクをタップする必要がある。 所持数に3と入れると現在必要数が1になります 勇将リスト というシートも『あるし』さんが作ってくれた。 ここを確認すると、誰がどの装備になるかがすぐにわかるようになっている。 このスプレッドシートは基本的に自由に使って欲しい 複製して利用しても問題無い 一応知らない人のために補足すると、Googleスプレッドシートは無料のWebアプリで、Webブラウザさえあれば誰でも利用できる。 モバイルデバイスの場合は無料のGoogleスプレッドシートアプリをダウンロードすれば利用できる。

『ごっつ三国』装備素材必要数自動計算スプレッドシート猛将編

イメージ
私が今月お世話になっている、ごっつ三国の軍団『半日天下』の団長『あるし』さんが必要な素材の数を自動で計算出来るプログラムがあったら便利だという話をツイッターで呟かれていたので、それならGoogleスプレッドシートで簡単に作れるだろうと思って、まずは『天神の偃月刀』の素材の一つ、『天神の月刀』部分を作ってみた。 意外と時間がかかって1時間くらいはかかったけど、問題なく動作した。 特にGoogleスプレッドシートの便利機能を活用しているわけでもないので、ここで掲載するようなテクニックはほとんど無い。 ちょっと手間がかかった箇所は以下の二点 所持数が多い時に必要素材数がマイナスになってしまわないようにif関数を使ったところ 資源素材は上位の資源素材としての必要数と、合成の為の必要数があり、それぞれに所持数を差し引こうとして無理だと気がつくのに時間がかかったこと まぁ、たいしたテクニックは使っていないし、使う人にはどうでもいいことなので技術的な話はこれでお終い。 『天神の偃月刀』の残りの部分は簡単に作れたので『あるし』さんに検証してもらった。 問題ないとの事であった。 その後、『あるし』さんが『天神の偃月刀』を元に『皇帝の寒鉄大斧』『☆7蚩尤の手袋』『蚩尤の兜』『蚩尤の鎧』を作ってくれたので猛将に関しては一通り試算できるようになった。 以下のリンクをクリックするとスプレッドシートに遷移するので現在所持数を入力すれば、後どれだけ必要かが自動計算されるようになっている。 iPhoneの場合はリンクをsafariで開くと表示しか出来ないのでGoogleスプレッドシートアプリを予めインストールした上でsafariで開くと自動的にスプレッドシートアプリで開かれる。 『☆7天神の偃月刀』 『☆7皇帝の寒鉄大斧』 『☆7蚩尤の手袋』 『☆7蚩尤の兜』 『☆7蚩尤の鎧』 共同で何かを作るのは1人で作るよりずっと早く進むのが素晴らしいと感じた。 私はしょっちゅう1人でものを作ってしまうので、そのせいで完成に至らないものも結構多い。 目的が同じなら色んな人と協力するのもいいと実感した。

【GAS】多分、恐らく、全く無意味な関数を作ってしまった(INDIRECT関数凄い)

イメージ
GoogleスプレッドシートにはINDIRECTという関数がある。 これはとても便利な関数と何処かで読んだ事がある。 改めて利用例を色々見ると、関数を書き換えなくても動的に関数の動作を変えることが出来る関数というのが正しい理解であろうか。 この関数は便利そうである。 よく見かける利用例はこんなので、行数が不確定なデータの合計を取る必要がある場合どうするのかというもの。 =SUM(A1:A16) と、このように指定した場合、行数が変わったら関数を書き換えなければならない。 ここで、行数を調べるために=COUNTA(A:A)として行数を調べる。 で、=SUM("A1:A"&COUNTA(A:A))としたいがエラーになる。 これを解決するのがINDIRECT関数という説明で以下のようにする。 =SUM(INDIRECT( "A1:A"&COUNTA(A:A))) COUNTAでの増減対応例  これで行数が増えても減ってもA列をカウントした数までSUMの対象になる。 INDIRECT関数で文字や数値を関数に渡すことで、色々と動的に関数の挙動が変えられるわけだ。 でも、COUNTAだと間に空白行があったら、空白はカウントしないから範囲がずれてしまう。 事例には続きがあり、もっと複雑な関数の組み合わせで空白行があっても最終行を対応する事が出来る事例が掲載されていた。 だが、その事例を見た私は、こんな複雑で見づらい関数の組み合わせを使いたくないと思った。(MAX関数とMATCH関数を用いるものであったがここでは割愛する) であるから、シンプルに最終行を取得するユーザー関数を作ってしまったのである。 「作ってしまった」 だって多分恐らく全く無意味だから・・・。 とりあえず、作ってしまった無意味な関数を使う場合こうなる =TOMM(A:A) これで最終行が数値で取得できる。 空白行があっても問題はない なので、空白行があっても対応できる範囲が可変なSUM関数はこんな感じで使える。 =SUM(INDIRECT( "A1:A"&TOMM(A:A))) シンプル!、MATCH関数を組み合わせるような利用例と比べたらかなりシンプル!...

「翻訳しないをする」GAS LanguageApp.translate

イメージ
 機械翻訳を行なっていると、部分的に翻訳したく無い箇所がある事に気がつく。  私の場合、翻訳精度を上げるために固有名詞リストを作り、翻訳にかける前に固有名詞をシリアルコードに全置換して、LanguageApp.translateで翻訳後にシリアルコードを該当言語の固有名詞に全置換するスクリプトを組んでいたのだが、翻訳後にシリアルコード部分にスペースが混入したり、さらには数字が欠落することがあった。  コードがおかしくなると当然ながら置換に失敗してしまう。  数十回に一回の割合であったが、翻訳後にシリアルコードが残ってしまうのでは大問題であった。 例 ABCD0011 このようなコードがあったとする  以下の三行のような形で余分なスペースの混入や数字の欠落が見られた。 ABCD 0011 ABCD001 ABC D0011  このような変わってはいけない文字列は翻訳対象から除外するべきであろう。  しかし、翻訳対象から外す方法はLanguageApp.translateの説明を読んでもどこにも書いていない。 https://developers.google.com/apps-script/reference/language/language-app  翻訳対象から除外する方法としてトリプルブラケットで囲むという方法があると以前そちらの方面の人から聞いていたが、少なくともLanguageApp.translateでは効果がなかった。  様々な記号で囲んでテストしてみたが、翻訳対象から除外することは出来なかった。 もうほとんど諦め気分で検索を繰り返していた時、そんな時にhtmlのページ翻訳から翻訳対象を外す方法を目にした。 <span translate="no"> text... </span>  こうして翻訳対象から外したい文字列を囲むことでWeb上に公開したページに関して閲覧者がページ翻訳を行ったとしても指定箇所だけは翻訳されずに残るという事だ。  公開したWebページの話しなので、LanguageApp.translateには関係無い。そう思った。  しかし、何か解決策がないかとリファレンスを何度も見返していた。  よくよく見返すと使用方法は2種類記載がある。  1つめはこれ...

Googleスプレッドシート GASで翻訳関数を敢えて作る

イメージ
Googleスプレッドシート(Google sheets)は無料で使えるWebアプリ。 従来の表計算ソフト(Excel,LibreOffice Calc,etc)のようにローカル環境にインストールする必要がなくウェブブラウザがあれば利用できる。 また、従来の表計算ソフトには無いGoogleならではの関数や機能がたくさんあり、表計算ソフトの新しい使い方を提示している。 特にウェブ関連の関数はとても便利だと感じる。 importxml関数は文字通りxmlを指定してシートにデータを挿入する関数であるが、これを使うとWikipediaの記事をAPIで取得してシートに貼り付けるといった事が簡単に実現できる。 また、googletranslate関数はセルの内容を指定した言語に翻訳する関数で、こちらもとても便利。 A2に『ドラえもん』と入っていたとして、英語に翻訳したければこうする。 =googletranslate(A2,"ja","en") 『Doraemon』と表示された。 もうちょっと長い文章を翻訳させてみよう。 A2に『宇宙船サジタリウス』と入っているとしてimportxmlでwikipedia APIを呼び出して要約を取得する。 =IMPORTXML("https://ja.wikipedia.org/w/api.php?format=xml&action=query&srlimit=10&list=search&srsearch="&A2,"//p/@snippet") 『"『宇宙船サジタリウス』(うちゅうせんサジタリウス)は、1986年1月10日から1987年10月3日までテレビ朝日系列で、毎週金曜19:30 - 20:00(JST)に全77話が放送された、日本アニメーション制作の日本のオリジナルSFアニメである。 藤倉電線(現・フジクラ) →"』 この文章をgoogletranslate関数で翻訳すると以下のようになる。 『"""Spaceship Sagittarius"" (spacecraft Sagittarius) is a T...

Googleスプレッドシートの正規表現置換で改行文字

イメージ
Googleスプレッドシートでは正規表を用いた置換が行えて便利だが、置換文字列に\nといった改行文字を入れても文字として\nが入ってしまい改行が出来ない仕様になっている。 しかし、Googleスプレッドシートの正規表現では検索文字列をキャプチャして置換文字列に利用することが出来るので、もしかして改行をキャプチャしてしまえば置換文字列に改行を使うことが出来るんじゃないか? と思った。  試してみる。 まず、セル内改行を行って 改行 改行 改行 と文字を並べる。  ここで検索対象文字列は(\n)と改行をカッコでくくってキャプチャー対象文字列にする 置換文字列には$1$1とキャプチャーした文字を二つ並べる これで改行が二重になって一行空行が入れば成功    出来た! 改行 改行 改行 と改行が二重になって空行が増えている!