1
1

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.

40 代おっさん GASの配列を使ったデータ処理を行ってみる

Posted at

本記事ついて

本記事は プログラミング初学者の私が学習していく中でわからない単語や概要をなるべくわかりやすい様にまとめたものです。
もし誤りなどありましたらコメントにてお知らせいただけるとありがたいです。

配列を使ったデータの追加、削除

シート上のデータは配列としてまとめて収得、入力するとアクセス回数、実行時間を削減できます。
理想的な手順
・シート上のデータを配列として取得
・配列の状態で処理を施す
・処理を施した配列のデータをまとめてシートに入力

シート上のデータを追加、挿入、削除をする場合

pushメソッド:配列の末尾に新しい要素を追加
popメソッド:配列の最期の要素を取り出す
spliceメソッド:配列内の指定した位置にある古い要素を取り除きつつ、新しい要素を追加することが可能
shiftメソッド:配列の最初の要素を取り出す
unshiftメソッド:配列の先頭の新しい要素を追加する

お試し
データを入れて行ってみてください

function toshiki4() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const values = sheet.getDataRange(). getValues();

  values.push(['アッキー', 9, 'りんご', 'ドラえもん', '']);
  console.log(values);

  values.splice(1, 1, ['パパ', 41, '', 'ガンダム', 'ゲーム']);
  console.log(values);

  values.shift();
  console.log(values);

  sheet.clearContents();
  sheet.getRange(1, 1, values.length, values[0].length).setValues(values);
}

配列を使ったデータの検索

ここで使うが
indexOfメソッド:文字列や配列において、検索したい要素が配列内の先頭から何番目にあるかを教えてくれるメソッド
flatメソッド:flatメソッドは2次元配列を1次元配列に変換する事ができるメソッド

お試し
データを入れて行ってみてください

function toshiki4() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const values = sheet.getDataRange(). getValues();

  const keys = sheet.getRange(1, 3, sheet.getLastRow()).getValues().flat();
  console.log(keys);

  const favorite = 'みかん';
  console.log(keys.includes(favorite));

  const row = keys.indexOf(favorite);
  console.log(row);

  const [ name, age] = values[row];
  console.log(`${favorite}が好きなのは、${age}際の${name}です。`); 
}

配列を使ったデータの抽出

シートから特定の条件だけを抽出したいときには、filterメソッドを使用

filterメソッド:配列の要素のうち関数fncを満たす要素のみで新しい配列を生成して返す。(ファルター)

function toshiki4() {

  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const values = ss.getActiveSheet().getDataRange().getValues();
  const header = values.shift();

  const targetValues = values.filter(record => {
    const [name, age] = record;
    return age < 30;
  });

  targetValues.unshift(header);
  const targetSheet = ss.getSheetByName('出力シート');
  targetSheet
    .getRange(1, 1, targetValues.length, targetValues[0].length)
    .setValues(targetValues);
}

参考資料

https://www.amazon.co.jp/s?k=google+apps+script+%E5%AE%8C%E5%85%A8%E5%85%A5%E9%96%80&adgrpid=110264232688&gclid=CjwKCAiA9aKQBhBREiwAyGP5lSl7AJJLCvOEHb4wQgMlyqW1fll5X8GDTT_Rkd1_soUAyIPMXQr26hoClHEQAvD_BwE&hvadid=553833563682&hvdev=c&hvlocphy=1009076&hvnetw=g&hvqmt=b&hvrand=4378489642044417389&hvtargid=kwd-594191211348&hydadcr=4106_13159878&jp-ad-ap=0&tag=googhydr-22&ref=pd_sl_2x1owglv0s_b_p52

1
1
1

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?