从成员的google文档生成日程表'可用性

Generating a schedule from a google doc of members' availability

本文关键字:日程表 可用性 成员 google 文档      更新时间:2023-09-26

我有一个google doc电子表格,其中包含了每个小组成员在每周特定时间的可用性信息。一周中需要召开多次会议,团队的不同成员需要参加特定的会议。我需要一种方法来生成基于此的日程安排,以便大多数成员可以参加每个会议。所有会议都不能在同一时间段举行。

表为每个会议包含一行。每一列代表一个时隙(例如。周一下午6:30 -8:00),会议可以举行。对应于某个会议和某个时隙的单元格包含一个数字,表示可以参加每个会议的人数。如果单元格包含的数字与注册参加会议的成员人数相同,则google docs会自动突出显示该单元格。

我正试图通过使用谷歌文档的脚本功能来解决这个问题,但是我在计算算法方面遇到了麻烦。我只需要一些伪代码,我就能写出来了。

假设在我的脚本中,我有一个单元格的二维数组,以及一个二维布尔数组,对应于单元格是否突出显示(这意味着最多的成员可以出席)

下面是一个表的示例:

|Meeting    |Mon 6:30-8:30pm |Mon 8:30-10:30pm |Tue 6:30-8:30pm |Tue 8:30-10:30pm |
|-----------|----------------|-----------------|----------------|-----------------|
|Meeting 1  |7               |9                |8               |6                |
|Meeting 2  |3               |5                |1               |4                |
|Meeting 3  |10              |15               |12              |8                |
|-----------|----------------|-----------------|----------------|-----------------|

谢谢你的帮助!

假设我明白你在说什么,你将不得不从选择会议安排的顺序开始。我能想到的最好的办法是,考虑到听起来其他条件都是一样的,从简单地选择最多人能参加的会议开始:

firstScheduled = max(max(meeting1), max(meeting2), max(meeting3));

之后,查看剩余的会议,看看哪一个会议在当前未安排的日子里出席率最高:

foreach meeting as m
    foreach day as d
        if d is currently scheduled
            m = 0  // set all attendees to 0; no one can come, since the'll be
                   // at the other meeting
        end if
    end for
    highestAttendanceDate = max(meeting1)
end for

然后重复,直到所有会议都安排好。