前回の記事は @syk_nakayama さんのフィッシングメールが届いたので踏んでみた でした。
明日の記事は @arakawa_moriyuki さんです。
はじめに
こんにちは、サービスデスクの@T_melですmm
ユーザーさんのお困りごとを解決するために奮闘中の私達サービスデスクがアドベントカレンダーに初参戦です
超絶初心者のため表現などが分かりづらいと思いますが、温かい目で見守っていただけると幸いです!
協力者:伊禮氏、他サービスデスク沖縄メンバー
さて何からはじめよう
とある業務にて、私が対応漏れを多発させたことをきっかけに、自動化しちゃおうぜ☆的な話が丁度あがったので
「GASだ!!SCRIPTだ!」となったわけですが、、、(SCRIPTが何なのかもよくわかっていない←)
スクリプトエディタも開いたことのない超初心者なのです。「エディタとやらはどこから開くのかしら…」から始まりました。
まずはゴールを決めないと作業も始められないので以下2点をこの記事を上げるまでに達成することに決定!
・マスタデータからの転記
└理想は特定ワードに紐づく情報を転記
・スクリプト実行ボタンを作りたい
そして前提として、己の力のみでどこまで出来るか挑戦!ということです。
(ありがたいことに開発の方から”いつでも相談しておくれ”とのお声もいただき心揺れました。感謝!)
まずはスクリプトエディタを触ってみる
入門書片手にお決まりの"Hello world"をやってみました。
結果↓
ここまでは大丈夫。一通り入門編にも目を通したことだしマスタシートのコードを読んでみようとなったのですがエディタを開いた瞬間絶望。
メインを探すのに一苦労。私達の業務効率化はこういう地道な作業をしてくれている人の元成り立っているのだと
改めて感謝し、今回は時間がないので読み解くのは宿題とういうことになりました。
シートに転記に挑戦
やっとここで転記作業に取り掛かかり、完成したのがこちら。
力技でシートの指定まではなんとかできました。、
①ワークブックの取得
└別のワークブックからデータを取得したかったのでIDで指定
②更に取得ワークブックの中からシートを指定
③セル範囲を取得する: getRange( rowIndex, colIndex, numRows, numCols )
④値を取得する: getValue
getRange
でセルの範囲を取得できることはなんとか分かったのですが、get●●●●,get●●●●sが複数あるためどの組み合わせが良いのか悩みました。複数のセルの情報を二次元配列で取得できるメソッドが書ければよかったのですがこちらも今後の課題です。
ボタンを表示!
ここの作業はとても簡単!
入門書にも初歩の初歩で出てきます。書いたコードがこちら↓
使用したのはSimple TriggersのonOpen(e)です。
onOpenでメニューを追加するとスプレットシートを開いたときに、カスタムメニューを追加することができます。
今回は読込み実行を押すと、先程のシートに転記のfunctionが実行されます。今回は一つだけですが、複数の実行指定ができるのでとても便利。
実際に追加されたのがこちら↓
無事に表示されました~!!
まとめ
たった10行ほどのコードを書くのにここまで苦労するとは思いもしませんでした。
実際にやってみて感じたのですが、サンプルコードなどネットで沢山見かけましたが、一つの結果を求めるにしても多種多様な
方法があるのでとても興味深かったです。これからの業務のためにもきちんと学んでいきたいと思います。
forやifを使って、情報の選別をして転記しようかなと奮闘中ですが、その前に二次元配列についても勉強せねばと思っております…。
読みにくい部分が多々あったと思いますが、最後までご拝読いただきありがとうございました!!
参考文献
詳解! GoogleAppsScript完全入門 ~GoogleApps & G Suiteの最新プログラミングガイド~ (日本語)
https://www.yukibnb.com/entry/gas_learn_getrange
https://uxmilk.jp/25841
https://fastclassinfo.com/entry/gas_data_tenki/