前提

接到需求做一个公会战玩法,具体需求对齐过程这里省略,最终问题落在几个相似方案的选择上。
因为这个玩法比较大,贸然做原型和草案担心会浪费时间在返工上,于是想要用简单工具做一个玩法体验模型出来
考虑到互动性,放弃了excel后尝试使用谷歌的在线文档,以下是一些学习所得:

文档设计

谷歌文档与excel基本大同小异,公式和常用操作都能无缝转换,这里记录几个特别的点:
80074-wpgfj9my9f.png

  • 数据验证,谷歌文档支持对于不同验证值分别显示样式,以及多种下拉菜单,整体看起来高级不少
  • 条件格式,设置选项感觉比excel友好些,不过高级设置还是由公式驱动,这里使用了这个公式
    =COUNTIF($E$3:$Q$21,E3)>1
    能够使范围内重复值标红,这里的E3就有点玄学的味道了,跟excel如出一辙
  • 整列复制粘贴,复制整列以后在表头右键,发现没有插入复制的列(也许是没找到正确姿势?)这一点不如excel方便
  • 权限设置,因为是在线实时多人编辑文档,谷歌文档要更重视权限问题,相应的权限的设置也更常用,这里需要多测试,脚本有涉及对单元格赋值的话这些对应单元格都需要给与权限,否则被分享人是不能顺利运行脚本的。

APPS脚本

通过帮助-APPS脚本可以创建绑定于此文档的脚本,并且可以在管理界面直接复制文档,其脚本也会复制一份并与新文档自动关联。从界面能看出来谷歌生态的强大,一个APPS脚本可以控制各种产品,gas还是以js为根基,易用性天生得到保证。
以下记录本次用到的内容备忘:

  • 获取当前活动工作表:

    var currentSheet = SpreadsheetApp.getActiveSheet();
  • 根据表名获取工作表:

    var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("player1");
  • 获取range:

    var turnRange1 = sheet1.getRange('d1:e1');

    54287-xhf60ximt3.png

  • 菜单栏定义:

    function onOpen() {
        var ui = SpreadsheetApp.getUi();
        ui.createMenu('公会战操作')
         .addItem('生成成员', 'genMembers')
         .addItem('重开一局', 'cleanReset')
         .addSeparator()
         .addSubMenu(ui.createMenu('阶段操作(管理员)')
           .addItem('准备期1', 'turn1')
           .addItem('斥候战', 'turn2')
           .addItem('准备期2', 'turn3')
           .addItem('正式战斗', 'turn4'))
         .addToUi();
    }
  • 获取单元格值和赋值:

    turnRange1.getCell(1,1).setValue("准备期1")
    rangerPowRange1.getCell(1,1).getValue()
  • 清理内容:

    sheet1.getRange('e22:s24').clearContent()

标签: web, Google, GAS, JS

添加新评论