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}`