アメリエフの技術ブログ

Amelieff Staff Blog

misawatの「適度にGASを使う」②

いっつも元気なmisawatで〜す!!
今日は「わ〜お!」から行くよ!せーのっ!!
   
   
   
   
   

・・・、どうも。
今回は適度にGASを使うの第二弾です。
コードの書き方とか良し悪しとかはQiitaとかで先人たちがいくらでもやってるので、
「僕はこうしてる」ってのを基軸にお話します。

「GASってなによ?」って人はこちらから。 → https://staffblog.amelieff.jp/entry/gas.1

さて、プログラムは何も書き連ねればいいだけじゃなく、可読性、もっと言えば美しさも重要です。
例えば、、、

コード1

(省略)  
:  
switch(choice_p_t){case "1":payment_terms = "納品検収後、翌月末までに指定の銀行口座へ入金";break;case "2":payment_terms = "業務開始月、翌月一括払い";break;case "3":payment_terms = "別途取り決めの通り";break;case "4":payment_terms = "別途協議の上決定";break;};  
:  
(省略)  

コード2

(省略)  
:  
  switch(choice_p_t){  
    case "1":  
      payment_terms = "納品検収後、翌月末までに指定の銀行口座へ入金";  
      break;  
    case "2":  
      payment_terms = "業務開始月、翌月一括払い";  
      break;  
    case "3":  
      payment_terms = "別途取り決めの通り";  
      break;  
    case "4":  
      payment_terms = "別途協議の上決定";  
      break;  
  };  
:  
(省略)  

1より2のほうがカッコいいし、見やすいでしょ?✨

もちろん、大目標は「意図したとおりにプログラムが動くこと」なので、
とりあえず動くように書いてからリファクタリング(コードの構造最適化)してもいいんだけどね。

misawatの「美しくGASを使う」

さて、GASで美しさを求めるには、プログラムの規模感にもよるけど、自分基準だと以下の取り決めのもと書いています。

  1. 単発の処理→1つの関数内に書きなぐり

  2. 複数の処理、分岐なし→1スクリプトファイルの中に、複数関数を作成し、main関数で実行

  3. 複雑な処理、条件分岐あり→機能カテゴリごとにスクリプトファイルを分割し、main関数から実行

ちなみに、スクリプトファイルってのはこれのことです。

f:id:miwa-t:20191114193959p:plain:w300

まず1. 単発の処理→1つの関数内に書きなぐり について。

これはそのまんま。一つのスクリプトファイルに処理を書いて実行するだけ。

例えばSpreadSheetのコンテナバインドスクリプトを想定して、
「任意のセルに任意の文字列を書き込む」ってのを作ってみましょう。

f:id:miwa-t:20191114194654p:plain
スプレッドシートをつくりましてー

f:id:miwa-t:20191114194732p:plain
スクリプトエディタを開きましてー

f:id:miwa-t:20191114195848p:plain
コードを書きましてー(タイトルとかは適当に変えてます)

↑注目(`・ω・´) ココが 「1つの関数内に」書いたところ。この分量なら読みやすい

f:id:miwa-t:20191114200029p:plain
ここ(▶︎ or '実行')から実行するとー

f:id:miwa-t:20191114200102p:plain
SpreadSheetの方はこんな感じになってましてー

f:id:miwa-t:20191114200145p:plain
入力しましてー

f:id:miwa-t:20191114200252p:plain
もういっちょ、入力しましてー

f:id:miwa-t:20191114200331p:plain
つんでれメッセージを頂戴したらー

f:id:miwa-t:20191114200412p:plain
かきこまれましたのー

図らずとも、基本的なGASの使い方講座になりましたな。
次回は2の「1スクリプトファイルの中に、複数関数を作成し、main関数で実行」をやりますよー。・・・たぶん。

staffblog.amelieff.jp