2
2

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 3 years have passed since last update.

GASでツールを作る

Last updated at Posted at 2020-09-15

1. はじめに

GASツール作成までを書きます。

2. GASの一般的な説明

2-1. 作り方、実行の仕方

動画参照してね
IMAGE ALT TEXT HERE

3. テンプレシートを使ってGASを触ってみる

3-1. テンプレファイルを自分のところにコピーしましょう

テンプレ
image.png
上のテンプレファイルのコピーを作成
Screenshot 2020-09-15 at 20.32.13.png

名前と場所はお好きにどうぞ
Screenshot 2020-09-15 at 20.32.24.png

3-2. GASの各ファイルを読んでみましょう

Screenshot 2020-09-15 at 20.38.49.png

ひとくちメモ:プログラミングはこれから起こることを書きます。mainメソッドから順番に、1行目からこれから起こることが書かれているようなイメージで読んでください。

main.js
// メインメソッド。このツールの大元となるメソッドです。
function main(){
  // sheet.jsのメソッド「getSheetData」から配列を取得
  const data = getSheetData();
  
  // 出力用の配列(空)を用意
  var outList = [];
  
  // 配列の中身(連想配列が入っている)を1つずつ実行
  for(var member of data){
    
    // check.jsのメソッド「check」を実行。
    // メソッド内部でoutListに追加がされているので、どんどんoutListに情報が貯まる
    check(outList, member);
  }
  
  // sheet.jsのメソッド「writeSheet」を実行
  writeSheet(outList, 'out');
}

sheet.js
// 「getSheetData」メソッド。inシートから情報を取得します。
function getSheetData(){

  // シートそのものを取得。configというのはシート名。ここを変えればどのシートでも取得できる
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('in');

  // シートの情報をすべて取得
  var data = sheet.getDataRange().getValues();

  // 1行目は見出しなのでスキップ。見出しがない場合にはこの処理は省略可能。
  data.shift();

  // 空の配列(リスト)をつくる
  var list = [];

  // 行数分回す
  for(var row of data){

    // 連想配列として、配列に追加
    list.push({

      // ID
      id : row[0],
      // 名前
      name : row[1],
      // 性別
      sex : row[2],
      // 血液型
      bloodType : row[3],
      // 生年月日
      birthDay : row[4],
      // 電話番号
      phoneNumber : row[5],
      // 携帯番号
      cellPhoneNumber : row[6],
      // メール
      email : row[7],
      // 住所。連想配列の最後なので「,」がない。
      address : row[8]
    });
  }
  // 配列を返却
  return list;
}

// 「writeSheet」メソッド。
// 引数1 list シートに書き込む配列
// 引数2 sheetName 書き込むシート名
function writeSheet(list, sheetName){
  // シートを取得
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
  
  // 2行目から、配列分だけ行を追加
  sheet.insertRows(2,list.length);

  // 追加範囲に配列を出力
  sheet.getRange(
    2,
    1,
    list.length,
    list[0].length
  ).setValues(list);
}

check.js
// 「check」メソッド。
// 引数1 outList シートに書き込む配列
// 引数2 member inシートから取得した各連想配列
function check(outList, member){
  
  // エラー理由の変数を作成
  var reason = '';
  
  // もし電話番号が空欄だったら
  if(member.phoneNumber === ''){
    
    // 理由に文言を追加
    reason += '電話番号なし\n';
  }
  
  // もしメールが空欄だったら
  if(member.email === ''){
    
    // 理由に文言を追加
    reason += 'メールなし\n';
  }
  
  // もし理由が空欄じゃなかったら
  if(reason !== ''){
    
    // 出力用の配列に追加
    outList.push([
      
      // 今の日時
      new Date(),
      
      // 名前
      member.name,
      
      // 理由。配列の最後だから「,」がない
      reason
    ]);
  }
}

3-3. GASを実行してみましょう

「main.js」の
outシートがこうなるはず
Screenshot 2020-09-15 at 20.44.44.png

承認を求められたときはこちら
IMAGE ALT TEXT HERE

3-3. checkメソッドを変更して見る

処理の中に「住所が空欄だったら」というチェック処理を追加してみましょう

2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?