0
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【GAS】myコーディングルール/よく見るサイトを自分なりにまとめておく

Last updated at Posted at 2021-07-01

まえがき/やりたいこと

・一人開発でGAS/JavaScriptのスクリプトを毎月書いている
・開発部署ではない+社内でGASを書いている人がほぼ自分のみのため、コーディングルールがまともに存在しない
→自分だけでもコーディングルールを統一して、今後の開発や、万一人が増えたときに対応できるようにしておきたい

参考URL

この記事を作るときに参考にしたURL

Qiita: 変数/クラス名の命名規則に使われる記法の分類
キャメルケースとかスネークケースとかのやつ

Qiita: 定数を大文字にするのはどんなときか
コーディングルールで大文字小文字がどうのこうので悩んだときに

よく見るサイト

なんか困ったときによく見るURL

Google Apps Script: Reference
まずはこれを見よう

Google Apps Script: Guides > Quotas for Google Services
GASが一日に実行できる特定動作(ドキュメント作成とか、Gmail読み取りとか)の制限について

Qiita: GoogleAppsScriptのチートシート
基本的な関数の使い方や組み合わせ例

myコーディングルール

基本方針

・変数系はローワーキャメルケースを使う
test1_methodHogeHoge
最初は小文字、あとは単語ごとに頭文字を大文字で使う
意味のまとまり(?)をもたせたい場合は、アンダースコアでつなぐ
アンダースコアの後ろの頭文字は小文字

・定数系はconstで定義、グローバルに置いて何度も使う定数は大文字でアンダースコアつなぎ
IDとかSTRとかでグループ分けする
const ID_FOLDER_MASTER = "hogehoehoge";

・頭文字を大文字にするとIDEで補完表示ができるので、ほしいときは使う
const Ss = SpreadsheetApp.getActiveSpreadsheet();
const Sheet_main = Ss.getSheetByName("メイン");
→こうすると補完で出てくる

・ある程度のまとまりのある定数はオブジェクトで定義すると便利
セル番地の定数とか
const startRange = {row:2,column:2}
自分はセル番地の定数をまとめてオブジェクト化している

sample.gs
const rangeValue = {
  data:{row:2,column:2,width:3},
  getDate:{row:1,column:1}
}

セルの読み取りしてることがわかりやすくて良い

コメント・メモ・感想的なアレ
キャメルケースだったらアンダースコアつなぎは本当は使わないけど、自分はアンダースコアで変数定数にある程度まとまりをもたせたいし便利だと思ってるので使う。集団で開発するときはやめたほうがいい

function main1_createFolder(){}的な

コーディングルール_個別

main系関数以外(引数が必要でなんか処理して返り値を返すタイプの関数)にはできるだけJSDocコメントを書く

参考
GASの新エディタで自動補完を効かせて快適にプログラムを組もう
【初心者向けGAS】Google Apps Scriptのドキュメンテーションコメントの書き方
stackoverflow: Autocomplete for my functions in the google-apps-script editor
JSDocコメントを書くと関数を呼んだときに型の推論が効いたり、ヒントを出したりできる

test.gs
/**
 * @param {number} a
 * @param {number} b
 * @return {number} result
 */
function test(){
  let a = 1;
  let b = 2;
  result = a + b;
  return result;
}

画像:GASエディタ内で関数を呼び出すときに、引数と型が表示される
image.png

constとletについて

・「var」は使わない、「const」ですむところはできるだけconst、他は「let」
・スコープはできるだけ小さく、スプレッドシート・シートはグローバルで宣言しちゃう
参考:JavaScriptで書く「var,let,const」の違いと使い分け方法

Date型データのフォーマット

参考:TF SYNNEX:GASでのDate型データのフォーマット

日時情報 形式 例(2021年1月2日(土) 午前0時3分4秒(JST)の場合)
年(西暦4桁) yyyy 2021
年(西暦2桁) yy 21
月(数字1~2桁 M 1
月(数字2桁) MM 01
月(英語短縮) MMM Jan
月(英語) MMMM January
日(数字1~2桁) d 2
日(数字2桁) dd 02
曜日(英語短縮) E Sat
曜日(英語) EEEE Saturday
曜日(数字) u 6(月曜:1、火曜:2、…日曜:7)
第n◯曜日(数字) F 1(=第1土曜日)
午前/午後 a AM
時(1~12時表記、数字1~2桁) h 12 ※1時のとき:1
時(1~12時表記、数字2桁) hh 12 ※1時のとき:01
時(0時~11時表記、数字1~2桁) K 0 ※昼12時のとき:0
時(0時~11時表記、数字2桁) KK 00 ※昼12時のとき:00
時(1時~24時表記、数字1桁~2桁) k 24 ※1時のとき:1
時(1時~24時表記、数字2桁) kk 24 ※1時のとき:01
時(0時~23時表記、数字1桁~2桁) H 0 ※昼12時のとき:12
分(数字1桁~2桁) m 3
分(数字2桁) mm 03
秒(数字1桁~2桁) s 4
秒(数字2桁) ss 04
タイムゾーン(英語短縮) z JST
タイムゾーン(英語) zzzz Japan Standard Time
タイムゾーン(数字) Z +0900

ネーミングルール

ファイル/フォルダ

  • ID…「ID_…」const、大文字で管理

const ID_FOLDER_MAIN = "hogehogehoge";
const ID_DOC_TEMPLATE = "hogehogehoge";

  • フォルダと各サービスを識別子で分ける

フォルダ…FOLDER
ドキュメント…DOC
スプレッドシート…SS
など

スプレッドシート

  • スプレッドシート…「Ss」1個しか使わないときは基本的にこれ

const Ss = SpreadsheetApp.getActiveSpreadsheet();
2個以上だったらSs_mainとかにする
Ssはグローバルで宣言していい…だいたいどの関数でも最初に呼び出すでしょ、と仮定

##シート

  • シート…「sheet_hogehoge」で複数管理

const sheet_main = Ss.getSheetByName(NAME_SHEET_MAIN);
必要な関数ごとの最初に宣言

  • シート名…「NAME_SHEET_HOGE」でconstでグローバルに置く

const NAME_SHEET_MAIN = "main";

  • よく使うシート名メモ
シート名 備考
マスタ(△master) データを読み込んだり書き出したりするシート
設定(or setting) 設定項目のうち、使用者が設定できるものを記載
使い方 ツールの使い方を同じSS内に記載したいとき
properties 設定項目のうち、使用者に変更させたくないものを記載
master_xxxx 参照用になんかのマスタをimportrangeしてくるときに使用

・人向けにスプレッドシートを作成するときのシート名は、使用者が使うシートは基本的に日本語にしておく

参考:Qiita: 技術英語 Options, Settings, Properties, Configuration, Preferencesの違い
よく悩むので参考にしている
※自分の場合は「作業者/使用者に自由に設定させていい項目→setting」「管理者/作成者が設定する項目→properties」あとはconfigを必要に応じて使う

関数名

  • 関数…「testHogeHoge」ローワーキャメルケース+アンダースコアで記載

ある程度意味の区切りでグループ化する
main1_createFolder()
main2_createFile()
とか

変数

  • 変数…「targetHoge」ローワーキャメルケース

よく使う単語

業務上で使う単語

日本語 英語(コード) 略したいとき
送付状 CoverLetter -
請求書 Invoice -
都道府県名 prefecture -
市区町村名 city -
自治体名(都道府県名+市区町村名) municipality -
郵便番号 postcode -
住所 address -
部署名 department dept
担当者名 name_staff -
年度 fisxalYear fy
置き換え(差し込み印刷) replace rep

接頭詞・接尾詞系

日本語 英語 略したいとき
◯◯名 name_
シート sheet_
ID id_
フォルダ folder_
額(金額) amount_
0
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?