サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
中東情勢
qiita.com/sakaimo
背景 Googleスプレッドシートで「プルダウンリスト連動」をする方法を調べると、いくつもHITします。 私がみた記事はスプレッドシートの関数(VLOOKUPとか)で実現している記事だったのですが、GASの知識が無くても扱える点では有利なのですが、 入力欄が増えると、それに合わせて式のコピーや入力規則のコピーが必要になる みたいなのです。 入力行を増やすたびにコピーミスや誤って式を消してしまったりするのが嫌だなーって思ったのです。 これは何の記事? 「プルダウン連動」をGASで実現したらどうなるかな、をやってみました。 もっとうまいやり方があったらコメント欄によろしくおねがいします! 完成図 「カテゴリ1」を選ぶと、それに連動する「カテゴリ2」の選択肢だけが表示されるようにしたい。 ↑これが 使う側のシート とします。 ↑これが 設定シート にカテゴリ1、カテゴリ2が定義されています。 ス
ここ数ヶ月、Pythonでデータ集計・分析を始めましたsakaimoです。 さっそく空文字の判定でミスりましたのでメモっておきます。 前処理として特定の列には「文字列あるいは空文字」が入ってることは保証されている状態。 そこの値が「空文字」かどうかの判定をさせたい。 test_df = pd.DataFrame( data={'文字列が入る列': pd.Series(['a', '', 'c'])} ) print(test_df) print("--------") moji = test_df.iloc[1,0] # 何も表示されない。空文字なので期待値通り。 print("moji: " + moji) # Falseになる。pandasのisnull()では「空文字」は「欠損値ではない」。欠損値とはNaNとかNaneのこと。 print("pd.isnull(moji): " +
普段気にすることの無かった JavaScript の「参照渡し」(正確には「参照値という値渡し」?)に出くわしたJavaScriptGoogleAppsScriptGAS こんな事がありました 他の人が書いたGoogleAppsScriptのコードを見ていて(と書くことによって「私じゃないよ!」を強調したい下心が見えますね)、Dateオブジェクトを渡すとその1週間後(7日後)が日本の祝日かどうかを判定する関数 isHolidayNextWeek() がありました。 こんな感じで使われていました。 function main() { const date = new Date("2023-10-02") // 翌週の 2023-10-09 は スポーツの日です if(isHolidayNextWeek(date)){ console.log(`${Utilities.formatDate(d
って書くと の画像のようにエラーになってしまいます。 BY が Query関数の予約語(group by とか order by かな)になってるので、列名として解釈できず、エラーになってる、、、(と思われる) 解決策 MySQLと同じく、カラム名(列名)をバッククオートでくくる。
「月ごと」には出せた 過去に書いた QUERY関数で「月ごと」に集計したい の記事で下記のように「月ごと」に出すことに成功しました。 今回の課題 それはそれとして、新たに下記のような元データ(左の表)の場合、「月ごと」で集計すると右の表のようになります。 D1セルに下記の式が入っています。 =query(A:B,"select month(A)+1, sum(B) where A is not null group by month(A)+1 label month(A)+1 '月', sum(B) '合計'",1) 2020年10月と2021年10月は、どちらも「10月」なので合算されちゃいます。 年を超えた月ごとの合計や平均を調べたいときはこれで問題ないのですが、「年月ごとの推移」を見たいときはこれじゃダメです。 これでどうだろう。 ↑ これだと「年月ごと」に集計することができました。
2019年に書いた Chrome拡張とGASを連携させる例 が今現在、ちゃんと動いていないことを上記記事のコメントでご指摘いただき、確認したところ確かにCORSのエラーが出てしまいます。 時を同じくして、業務でも「Googleスプレッドシートにかかれている情報を元にしてChrome拡張の動作を変える」というツールを作る機会が訪れました。 2022/04/14 追記 : manifest_version の3に対応した書き方を追記しました。 やりたいこと Googleスプレッドシートにあるデータを取ってきて、 そのデータを元に画面に対して操作する(色を変えるとか、ハイライトするとか、表示内容を変えるとか) 整理してみました (正直なところ、「仕組み」についてはあまり自信が無いので、間違っているとか、もっと良い説明の仕方があるよ、という場合はご指摘お願いします) うまくいくパターン conte
GASでスプレッドシートにある「日付」を扱ってる人はいっぱいいると思います。ここ、大きな罠があって、 スプレッドシートのタイムゾーン スクリプトエディタのタイムゾーン を合わせておかないと時間がズレます。1月15日を扱ってるはずなのに1月14日の数字が出てる、みたいなことが起こります。 私の手元ではスクリプトエディタのタイムゾーンが になってました。 スプレッドシートのタイムゾーン スプレッドシートの「ファイル→Googleスプレッドシートの詳細」から設定可能 スクリプトエディタのタイムゾーン 2020年末にエディタが新しくなりました。旧エディタは画面から設定ができたのですが新エディタになって設定できるメニューがなくなりました。そのため 自分で「appsscript.json」を編集する必要があります。(他の方法があった教えてほしい! スクリプトファイルの左メニュー 「appsscript
このタイトルで伝わると思えないのだけれど、なんて表現したらいいのかわからない... 前提 データポータルで可視化したい データソースがGoogleスプレッドシート 時系列に変化の推移を表現したい やりたいこと 2019年が終わろうとしています。この時期に「1年のまとめ」みたいのするじゃないですか。 その際に、例えばこういうスプレッドシートの表があったとします。 ↓ こんな感じでグラフ化したくなるじゃないですか。データポータルで。 データポータルをよく知らない人はこちらをどうぞ! Googleデータポータルを使ってデータを可視化する (非エンジニア向けレクチャ) -その1 - Qiita Googleデータポータルを使ってデータを可視化する (非エンジニア向けレクチャ) -その2 - Qiita このままだと上手くいかない例 のシートをそのままデータポータルとつなぐと、フィールド設定が下記の
課題 下記の図のようなmembersテーブルとresults(何かのテストの点数のつもり)テーブルをjoinして、一番右のテーブルをつくりたい。 SQLで書くなら select results.日付, results.メンバーID, results.点数, members.社員名 from results join members on results.メンバーID = members.メンバーID ワタシ的なポイントは { } ← これをなんと呼ぶのだろうか。 なかなかググれなくて困った。「配列」でいいのかな。 見つけたオフィシャルのヘルプは Google スプレッドシートで配列を使用する Query関数は Query(範囲,クエリ,[見出し]) の「範囲」の部分に「配列」を指定できる つまり 「結果として配列を返す関数」を「範囲」の中で使える という発想になかなか思い至らなかった。。。
この記事が古くなってしまったので、Chrome拡張とGASを連携させる例(改) - Qiita を参照してください!(2021/05/18) 【エンジニア交流会】Google Apps Script 活用ミートアップ #4 - connpass で発表したこれ↓ Google Apps Script 活用ミートアップ#4 発表資料 の中で Chrome拡張とGASで連携させる例 を紹介したのですが、質疑応答のときに「ソースコードが見たい!」というリクエストをもらいました。時間の都合と、懇親会で酔ってたので、改めてこの場で紹介します。 Chrome拡張(エクステンション)とGASを使ってこんなことができるよ、という例です。 活用方法はいろいろあると思うので、いいネタがあったら教えてほしいです! 例題として 「Qiitaを見ていて「この記事いいな」って思ったら、そのタイトルとURLをスプレッド
Chrome Extension の作り方 (その1: 3つの世界) - Qiita Chrome Extension の作り方 (その2: Contents Script) - Qiita Chrome Extension の作り方 (その3: Browser Action / Page Action) - Qiita Chrome Extension の作り方 (その4: Event Page / Background Page) - Qiita の連載の最終回!! ChromeExtensionを作っていると「メッセージパッシング」という言葉を見かけます。 Message Passing - 公式 Chrome Extension の作り方 (その1: 3つの世界) - Qiitaの説明の通り、3つの世界があるのですが、異世界とやり取りしたい状況が出てきます。 今回のサンプルでは c
Chrome Extension の作り方 (その1: 3つの世界) - Qiita Chrome Extension の作り方 (その2: Contents Script) - Qiita Chrome Extension の作り方 (その3: Browser Action / Page Action) - Qiita の続き。 Event Page (Background Page) について説明します。 できること Chromeを起動している間ずっと動いてるスクリプトであり、Declare Permissions に書かれているChromeのAPIをフルに使うことが出来ます。 これはExtensionがインストールされてから(その後はChromeが起動されてから)ずっと、目に見えないところで動いているスクリプトだそうです。 Event Page と Background Page が
Chrome Extension の作り方 (その1: 3つの世界) - Qiita Chrome Extension の作り方 (その2: Contents Script) - Qiita の続き。 Browser Action (Page Action) について説明します。 全てのページに対してアクションを起こしたい → 公式 Browser Action 特定のページに対してアクションを起こしたい → 公式 Page Action というように使い分けるようです。 できること アイコンをクリックしたときに何かの処理をさせることができます。 ここでいうアイコンとは、ブラウザの右上に出るこれらのこと(下記の赤枠) Browser Actionの例 アイコンをクリックすると、現在開いているタブの数を表示する君を作ってみます。 フォルダ構成 現在開いているタブの数を表示する君 └icon1
これは何の記事か? 社内のノンプログラマにGASを教えて、みんなでラクしようぜ!という活動をしています。 業務の中で圧倒的に利用頻度が高いのが「スプレッドシート」。 スプレッドシートのデータを扱うときに const sheet = SpreadsheetApp.getActiveSheet(); const data = sheet.getDataRange().getValues(); こんな感じで、「シートの中身を全部取ってきて、あとは二次元配列 dataで扱う」ことをします。 ノンプログラマにプログラミングを教えるにあたって「ループ」「配列(しかも二次元)」というのはなかなかに難しい内容です。 今回はスプレッドシートを扱う上での二次元配列について、どう教えたらいいか、を書いてみます。 もっといい教え方、伝え方、理解の仕方、があったらぜひ教えてください! 前提 単純な「配列」については
(追記 2020/09/19) Moment.js の開発が終了したようです。 ↓ ここ参照 https://momentjs.com/docs/ 今すぐライブラリが使えなくなることは無いと思いますが、この先、積極的にこのライブラリを選択するかどうかは考えものですね。 あと、GAS版のライブラリがどうなるのか、については情報が見つかりませんでした。(どなたか知ってたら教えてほしい) GASで話をしますが、Javascriptでも同じです。 GAS版 MomentライブラリのIDは下記です。 やりたかったこと こんな表を作って、毎朝8時台にGASが起動して、「締め切りまであと3日」以内になったら「締め切り近いけど大丈夫?」というリマインドをしてくれる機能を作りたい。 そのため、Momentライブラリをつかって「日付の差分」を取りたかった。 ダメだった例 簡略化するためにA2セルの日付だけを対
配列Aには存在していて、配列Bに存在しないものを取り出したい。という事がありました。 ケースとしては すでに記録されているデータがあって(existData)、新たにもらったデータ(newData) のうち、existData にあるものは無視して新しいものだけを取り出したい というものでした。 教えてもらったコードが下記。きっと後でも使うのでメモ。 下記の例では [4,5] を取り出したい。 function pickupNewData(){ const newData = [3,4,5]; const existData = [1,2,3]; const filtered = newData.filter( newVal => { const hasValue = existData.some( existVal => existVal === newVal ); return !ha
これは何? 非エンジニア向けに行なった社内レクチャの資料です。 データ活用 とか データドリブン とか言われてますが、まずは「データを活用しやすい状態にする」ことを目指します。 「データの可視化」をものすごく簡単に言うと 表を元にグラフを作る です。まずは算数の世界で十分です。 ↓これはうちの子(小4)の算数の問題ですが、まずはこういうことです。特に非エンジニアのメンバーは「ツールを使って」というあたりに難しさを感じるのかもしれませんが、これはエンジニアかどうかに関係なくいわゆる「ITスキル」の範疇になってきてると思います。(エクセルやワードと同じ感じで使えるようにツールが充実してきてます) レクチャの内容はGoogleスライドで作ったので、ほとんどそれのキャプチャで説明していきます。 想定読者 非エンジニアで 「何かのツールからダウンロードするとか、どこかからか送られてきたエクセルやCS
背景 GoogleAppsScript がV8エンジン対応になって、class構文でextendsが使えるようになったけど、ファイルの読み込み順によっては使えない という話を聞いたので調査してみました。 問題点の確認 class AAA { printMessage(text) { console.log(text); } } class BBB extends AAA { } function muFunc() { const b = new BBB(); b.printMessage("あああー"); }
GAS Spreadsheetの getRange(row, column, numRows, numColumns)を勘違いしていたGoogleAppsScriptGAS
弊社の「自動化チーム(4人)」では、主にGoogle Apps Scriptを使って業務の自動化・効率化に取り組んでいるのですが、「Chromeのエクステンションも使えるようになったら強いよね」ということで、チームで一番エクステンションを使いこなす男 @ikeikeda にレクチャーをしてもらいました。 その時の内容がものすごく良かったので、Qiitaに記事上げなよ、って言ったのですが本人が「そゆの苦手なんで」ってことなので、ネタだけもらって私が私なりに再構成して記事書いちゃいます。 あと、私自身がJavascriptの最新情報に追いつけていないので、誤った記法があったらご指摘いただけると嬉しいです。 対象読者 すでに Chrome エクステンション とか Chrome 拡張 作り方 で検索して、いくつかのQiita記事を読んだり、少なくとも1つは自分で作ったことがある人 (← manif
(追記 2020/10/24) QUERY関数で「年月ごと」に集計したい の記事のほうがニーズに合うかもしれません。 GoogleスプレッドシートのQUERY関数をつかって、「月ごと」に集計したいケースに出会ったのですが、ちと戸惑ったので自分メモ。わかってれば何でもないのだろうけれども。 やりたいこと こんな表があったとして ↓ これを出したい やったこと =QUERY($A$1:$B," select month(A)+1, sum(B) where A is not null group by month(A)+1 ", true) ってやると↓こうなる ※コメントいただいたように、month(A)+1する理由は、Query関数のmonth関数はゼロベースでのカウント(0が1月。1が2月)なので、month(5) は 4月を表します。 ラベルを付けたいのでこうする↓
NoMethodError: undefined method `have' for #<RSpec::ExampleGroups::Index:0x007f42e0f3de58> って怒られてなんでhaveが!って思って調べてたら have(n).itemsやitsはRSpec 3.0で削除されますが~ (http://qiita.com/yujinakayama/items/a1d31b2caa35642e8e69) って書いてあってマジかー、、、
2022/3/21 更新! Qiitaでこの記事を公開していたら、本を出版することになりました!!キャー!ありがとうQiitaさん。 ケーススタディでしっかり身につく! Google Apps Script超入門 ベースはGASレクチャーの内容ですが、説明の仕方を変えたり、コンテンツ追加したりしてますのでぜひお手にとってほしいです! 2020/5/1 更新! 資料をV8エンジン対応版 に更新しました! 主な変更内容は var をやめて const let に置き換えた 文字列の扱いを テンプレート文字列 を使うようにした 内容を見直して説明を厚くしたり、表現を変えたりした 2020/5/1時点で、世の中はコロナウィルス対策で非常事態宣言が出されているゴールデンウィークを迎えていますが、ステイホームしてる間にGASの学習をしたい人のお役に立ってほしい! 資料(Googleプレゼンテーション)
私はもともとソフトウェアQAの出身ですが、今は開発をメインにやっています。 「QAやってた人が開発やったら、品質の高いコードが出来上がるのでは?」って思うじゃないですか。 そうならなかった話を書きます。 私の経歴 7年くらいデジカメのソフトウェアQAをやってた。 6年くらいWebのQAをやってた。 2年くらいWeb開発・保守運用をやってる。 背景 1週間沖縄オフィスに行って業務を効率化してくるミッションをもらう(普段は東京オフィスに勤務) 具体的には「あるツールを使った操作を自動化」する(ことで作業効率を上げる) 私としては1週間も「それだけに時間を使っていい」枠をもらえたし、やってやるぜ感だった。(普段は同時に複数プロダクトを運用しており、1つのことに集中できる機会があまりない) 沖縄入りして現場のメンバーから状況をヒアリング・観察してみると操作が複雑で自動化(SeleniumWebDr
みなさんの記事に助けられております。私も何かお役に立てるよう頑張ります。 GAS、Query関数、LookerStuido、たまにChrome拡張を使って 自動化・効率化・見える化を担当しています。社内データの可視化やデータリテラシー研修やGASレクチャーをやってます。 GAS入門の本を出版しました! https://www.amazon.co.jp/dp/4297126273/ Follow
はじめに 2016年11月1日に正式版が公開されたMicrosoft Flowを試してみました。 先行してる類似サービスであるIFTTTは使ったことがありません。 これを書く時点(日本時間で2016年11月6日22時)で私が読んだ関連ドキュメントは Introduction to Microsoft Flow | Microsoft Flow だけなのと、稚拙な英語力なので「使い方」を完璧に理解しているとは言えないですが、まず新しいものに飛びついてみる根性で。 Frequently asked questions によると、Microsoft Flow supports Microsoft Edge and the current versions of Chrome and Safari.とのこと。私はChromeで試しました。 これからサービス自体も劇的に改善されていくと思うので、この
Xcodeからサンプルアプリを動かしてみる テスト対象アプリがどんなものなのか見てみます。 Xcodeを起動して、 File>Openで、ダウンロードした /Users/sakaimo/repos/sample-code-master/sample-code/apps/TestApp のディレクトリを指定するとこんな画面↓ 何も考えず、左上の「再生ボタン」みたいな▲ボタンをクリック。 うまく行けば「Build Succeed」って出てシミュレータが起動し、 ↑こんな画面になって(初回起動時は3分くらい待った。PCのスペックですかね) そのあと ↓こうなる テキストフィールドに[1], [2]と入れて[Compute Sum]をクリックすると [???]のエリアに[3]が出ます。うんうん、なるほどね。 アプリを終了させます。 アプリを終了するには、Xcodeの「■」を押せばいいようです。 シ
その2はこちら↓ [appium導入 その2] iOSアプリのサンプルテストコード(Ruby)を動かすまで - Qiita 背景 AppiumでiPhoneアプリの自動テストを試したい! だけど私のPCがWindowsでやりにくい!(Xcode的な意味で) ということで、余ってた(うそ)macを貸してもらって、そこでappiumを動かせるようになるまでの道のりをメモしておきます。 appiumとは? AppiumとはSelenium作者のJason Huggins氏を中心に開発されているスマホやタブレットのテスト自動化を実現するためのテストフレームワークの一種です。 「Appiumの使い方」を分かり易くまとめてみました!より引用 環境 ハードウェア モノ スペック
ansibleでの実行結果のsuccess/failedとignore_errors/failed_whenがよくわからなかったので調べてみたAnsible 知りたいこと ansibleでのsuccessとfailedの判定 それをハンドリングするための ignore_errors と failed_when の使い方 事前実験 存在しないコマンドを実行してみる ansibleでの接続先(リモートサーバー。CentOS6)で `sakaimo --version' コマンドしてみる。ちなみに現時点のsakaimoのversionは39.7くらいのはず。
次のページ
このページを最初にブックマークしてみませんか?
『@sakaimoのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く