見出し画像

ノンプログラマーかざまの業務自動化事例を公開!(Part3)~初心者がどうやってGASを学んだか~

こんにちは、総務 Dept. の かざま です(1月に部署異動をしました)。
前回は リマインドBotってなあに? というタイトルで、かざまが作った業務自動化ツールの機能やどんな良いところがあったかについてご紹介させていただきました。
今回は、未経験であり初心者のノンプログラマーかざまが業務を自動化をするために、どのようにGASを学んでいったのかについてお話させてください!

Google先生、教えて下さい!

どんなふうにツールを作ってみようか、と簡単に設計図を書いたあとは、ひとつひとつの動作をどのように実現するか、まずはネットで調べてみました。GASは、Googleのアカウントさえ持っていれば誰でも利用することができるサービスなので、日本語でもいろんな参考情報を探すことができます。
調べるときには、自分のやりたいことを細切れのキーワードに分けて検索するのがコツなのですが、その検索結果でよく見かけて、かつ、私がよく参考にしているのが、「いつも隣にITのお仕事」というブログです。

このブログでは、初心者向けに実際のコードとその実行結果を合わせて紹介してくれているので、初めてGASを触る人でも簡単に実際に自分で試してみて答え合わせをすることができます。いくつか試して慣れてきたら、やったことがあるもの同士を組み合わせて、自分がやりたいと思っているものに近づけていくことができました。
もちろん最初のうちはうまく行かないことも多くありましたが、失敗していた部分が解消されて、やりたいと思ったことが実際にできたときには、とてもワクワクしました。

どうしてもわからないことがある…、誰か助けて!

上で紹介したサイトを見て、大体はコードを書くことができたのですが、どうしてもわからないことがある…。どうしよう、となったときには、人を頼ることにしました。GASのベースとなる開発言語はJavaScriptです。JavaScriptは普段私たちが見ているウェブサイトの裏側でも使われている身近で取り組みやすい言語です。そのため、自分の身の周りに誰かしら知っている人がいるかもしれないと思い、Facebookで「こんな内容知りませんか?」とお伺いを立てたり、社内でJavaScriptを触ったことがありそうな人に「教えて下さい!」と頼み込みをしたりしました。Facebookで思いがけない人からコメントをいただいたり、社内で丁寧に教えてくださる方がいたりして、疑問が解決しました!
実際に業務の自動化を実践していくうちに、こんなに便利なものならば自分だけでなく他の人も気軽に試せたらいいのではないかと思い、社内で業務自動化に興味がある人が参加できるSlackのチャンネル(グループチャット)を作って質問し合えるようにしてみたところ、現在150名以上の社員が参加し、日々、わからないことの相談や便利なTipsの紹介などに役立てられています。

こんなスクリプトが完成しました

そんなこんなで、リマインドBotのGASを書くことができました! 作成したスクリプトの一部抜粋を掲載します。1番のポイントは、スクリプトがどんな操作をしているのか分かりやすいように説明文を細かく記載したことです。 このスクリプトを作成した当初は私も初心者だったため、自分がどういう意図でそのコードを書いたのかを明確にしておくことで、振り返りが楽になりました。 また、自分以外のプログラミングに詳しくない人が見たときにも「これなら私も使えそう」と思ってもらえるように心掛けました。 このスクリプトは、自部署の業務で利用する以外に、教材として全社に展開し、現在20以上の部署で活用されています。

function sendRemind() { //スプレッドシートの情報を定義
  //スプレッドシートを定義
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  //★要編集★シートを定義。リマインド対象者が載っているシート名を記載。
  var listdatass = ss.getSheetByName("★ここに記載★");
  //リマインド対象者が記載されている最終行を取得。
  var lastRow = listdatass.getLastRow();
  //★要編集★シートを定義。リマインド文が載っているシート名を記載。
  var messagedatass = ss.getSheetByName("★ここに記載★"); 
  //リマインド文が載っているセルを指定。カッコの中は、行、列の順番で指定する。
  //この場合は1行目、1列目という意味。
  var messageRaw = messagedatass.getRange(1,1).getValue();
  //// 途中省略
  //for文のカッコの中のiは行数を意味している
  //2行目からリストの最終行まで同じ処理を繰り返すという意味。
  for (var i = 2; i <= lastRow; i++) { 
    //ユーザー情報取得に必要な情報を定義する
    //メールアドレスが載っているセルを指定。この場合は、i行目、1列目という意味。
    var email = listdatass.getRange(i,1).getValue(); 
    //// 途中省略
    //ユーザー情報を取得する
    var lookup = UrlFetchApp.fetch(lookupByEmail,lookupParams);
    //ユーザー情報が取得できたかどうかを判定する
    var lookupOk = JSON.parse(lookup).ok; 
    if (lookupOk === false) { //もし、ユーザー情報が取得できていない場合
      //エラー内容を取得する
      var lookupError = JSON.parse(lookup).error;
      //エラー内容をスプレッドシートの2列目に記載する。この場合は、i行目、2列目という意味。
      listdatass.getRange(i,2).setValue(lookupError);
    } else { //もし、ユーザー情報が取得できた場合
      //// 途中省略
      //投稿完了をスプレッドシートの2列目に記録する。この場合は、i行目、2列目という意味。
    listdatass.getRange(i,2).setValue("○");
    }
  }
}


まとめ

どうしたら定型業務がたくさんあっても楽しくはたらけるんだろう?
この問いから始まったかざまの挑戦は、身近な業務の業務自動化による工数や精神的負担の軽減で、「はたらくを楽しく」に向けた一歩を踏み出すことができました。小さな改善の積み重ねが大きなゴールを達成するための1つのステップとなることを実感しています。
皆さんの身の回りには、自動化できそうな業務、ありますか?小さなところからでも、まずはできるかどうか考えてみる、実践してみる、を積み重ねて、皆さんも楽しくはたらく方法を探究してみてください!

この連載は、一旦これで終了になりますが、またなにかよい事例があった際には、是非紹介したいと思います!

\WHIのコーポレートサイトはこちら


この記事が参加している募集

オープン社内報

この記事が気に入ったらサポートをしてみませんか?