/** * トリガーはこのファイルの中の処理しか設定しない。処理の概要を記載するようにする。 */ // この処理を各ユーザーに実行してもらう。なお、実行の前にユーザーのトークンをシートに記載してもらう。 function refreshRoomMySheet() { // シート「room」からルームIDのリストを取得 const sheetRoomIdList = getRoomListFromSheet().map(room => room.getId()); // メンバーのインスタンスを作成して、トークンをメンバーに設定 const member = new Member(); member.setTokenFromSheet(); // そのメンバーが加入しているroomリストを取得して、グループチャット及び↑で取得しているルームIDにないルームのみに絞る const roomList = member.getJoinRoomList().filter(room => { return room.isSameType(ROOM.type.group) && !sheetRoomIdList.includes(room.getId()); }); // roomリストをシート「作業」に記載 BaseLibrary.refreshSheet( SHEET.roomMy.name, roomList.map(room => room.getOutListRoomMySheet()) ); } // これも各自に実行してもらう。それぞれのroomに管理者をinviteする function inviteAdmin() { // 管理者のメンバーのインスタンス const adminMember = new Member(MEMBER.type.admin); const member = new Member(); member.setTokenFromSheet(); // シート「作業」のroomリストから、各自のユーザーが管理権限を持っているもの(そうでないとinviteできないため)を100件抽出して、管理者メンバーをinvite getRoomListFromRoomMySheet() .filter(room => room.isSameMyRole(ROOM.myRole.admin)) .slice(0, 100) .forEach(room => room.addMember(member.getToken(), adminMember)); // シート「room」「作業」を更新する refreshRoomSheet(); refreshRoomMySheet(); } // シート「room」を更新 function refreshRoomSheet() { const adminMember = new Member(MEMBER.type.admin); // 管理者メンバーが加入しているroomリストを取得して1件ずつ実行 const outList = adminMember.getJoinRoomList().reduce((roomList, room) => { // DMなどは除外 if (!room.isSameType(ROOM.type.group)) return roomList; // シート「room」から取得したroomリストにあるか確認 const r = roomList.find(r => r.isSame(room)); if (r === undefined) { // なければroomリストに追加 roomList.push(room); } else { // あればそのroomでの権限を更新 r.setRole(room.getRole()); } return roomList; }, getRoomListFromSheet()).map(room => room.getOutList()); BaseLibrary.refreshSheet( SHEET.room.name, outList ); } // 管理者手順1 シート「file」に追記していく function addFileSheet() { const adminMember = new Member(MEMBER.type.admin); // シート「room」から対象のステータスのものを100件抽出 const roomList = getRoomListFromSheet() .filter(room => room.isSameStatus(ROOM.status.phase1)) .slice(0, 100); roomList.forEach(room => { let status = ROOM.status.phase2; try { // シート「file」にそのroomにアップロードされたファイルを追記 room.addSheetFileList(adminMember.getToken()); } catch (e) { status = e; } // シート「room」の該当roomのステータスを更新 room.setSheetStatus(status); Utilities.sleep(1000); }); } // 管理者手順2 シート「file」のファイルをgoogleDriveに保存 function saveGoogleDrive() { const adminMember = new Member(MEMBER.type.admin); // シート「file」のfileリストから、該当ステータスのものを100件抽出 const fileList = getFileListFromSheet() .filter(file => file.isSameStatus(FILE.status.unsaved)) .slice(0, 100); fileList.forEach(file => { // fileをgoogleDriveに保存していく。 file.saveGoogleDrive(adminMember.getToken()); Utilities.sleep(1000); }); }