GAS(javascript) 配列ArrayオブジェクトのforEachメソッド

GIGA School の1年目の終わりが近づいている。でもその前に年度更新の作業が待っている。昨年は、先生だけしかつかてなかったので先生のIDを変更するくらいの年度更新だけだったが、今年は本格的に使ったのでたくさんある。

その中でも、Classroomの年度更新に結構気を使う。管理コンソールからはClassroomの数くらいしかわからず、先生たちが作ったClassroomは削除もアーカイブもできない。クラスルームに教師で入っていれば、アーカイブはできる。さらにオーナーであれば、削除ができる。教師で入っていても、オーナーでなければ削除はできない。

もし、クラスルームがそのままになっていると、生徒がストリームに勝手に書き込んで、先生がいないと何を書いているかわからない状態になってしまう。オーナーが削除を原則にする必要がある。ここで問題は、クラスルームのオーナーが誰であるか、管理コンソールからはわからないことである。そこで、GASを使ってその学校のクラスルームのオーナーが誰であるか、教頭先生に知らせて、対応をしてもらうためにツールを作ることにした。

やってみると、Arrayオブジェクトの使い方が勉強になった。以下に書く。

GAS(javascript) のコード

function myFunction1() {
  /*
  配列ArrayオブジェクトのforEachメソッド

【参考】詳解!GoogleAppsScript完全入門[第3版]P.280
   */
  const array = ['AA','BB','CC'];
   array.forEach*1;
   // バックティック(`)の入力はShift+@でできる
//引数の順番が対応する。(値、インデックス(省略可)、もとの配列)
/*
情報  0: Hello AA!,AA,BB,CC
情報  1: Hello BB!,AA,BB,CC
情報  2: Hello CC!,AA,BB,CC
*/
}
function myFunction2() {
/*
2次元配列で
検索をする方法
【参考】https://qiita.com/gen0x39/items/3ed11cf41d1b571283e7
*/
  var hoge = [
    [1,2,3],
    [4,5,6],
    [7,8,9]
  ];
  hoge.forEach((row,i,moto1) => {
    row.forEach((element,j,moto2) => {
      if(element === 6){
        console.log("i:",i,"j:",j,"element:",element,"moto1:",moto1,"moto2:",moto2);
      }
    })
  })
/*
情報  i: 1 j: 2 element: 6 moto1: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] moto2: [ 4, 5, 6 ]
*/
}

スプレッドシートにデータを書き出すのがやりやすい。ただ、GASの制限で6分以内がある。APIをその都度呼んでいると結構時間がかかる。配列に読み込んでそこで処理をしたほうが速い。そうするとArrayオブジェクトがうまく使えるといいことがわかった。

 

*1:name,index,moto) => console.log(`${index}: Hello ${name}!,${moto}`