Apps 脚本使用上次编辑的工作表名称创建图章

问题描述 投票:0回答:1

我创建了一个“战斗表”电子表格。我想显示一个字段来显示轮到谁了。或者,显示最后编辑电子表格的字段。

电子表格有两张表,一张标有“Player1”,另一张标有“Player2”。

这个想法是每个玩家在玩游戏时都在不同的工作表/选项卡上。一旦进行编辑(在这种情况下,游戏字段中会放置一个“x”),我想要一个单元格(M1)来记录哪个玩家最后开火(或者轮到谁 - 如果可能的话) )在两张纸上。see screenshot

不幸的是,我删除了我尝试的脚本,但我正在使用 onEdit(e) 以及此脚本的变体:


function timestampIt(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0]; // this will assign the first sheet
  var cell = sheet.getRange('A1');
  var d = new Date();
  d.setHours(d.getHours() +1);
  var user = Session.getActiveUser().getUserLoginId();
  user = String(user);
  user = user.replace('@gmail.com', '');
  cell.setValue('Last updated: ' + d.toLocaleString() + ' by ' + user);
}

google-sheets google-apps-script
1个回答
0
投票

我不明白当player1放置X时,要更新的表是否是player2。如果是这样,这里有一个在编辑时触发的函数:

function updateLastEditPlayer(e) {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const player1Sheet = ss.getSheetByName("Player1");
  if (e.range.getSheet().getName() == "Player1") {
    const sheet = ss.getSheetByName("Player2");
    const cell = sheet.getRange("M1");
    let d = new Date();
    d.setHours(d.getHours() + 1);
    let user = Session.getActiveUser().getEmail();
    user = String(user);
    user = user.replace('@gmail.com', '');
    cell.setValue('Last updated: ' + d.toLocaleString() + ' by ' + user);
  } else if (e.range.getSheet().getName() == "Player2") {
    const sheet = ss.getSheetByName("Player1");
    const cell = sheet.getRange("M1");
    let d = new Date();
    d.setHours(d.getHours() + 1);
    let user = Session.getActiveUser().getEmail();
    user = String(user);
    user = user.replace('@gmail.com', '');
    cell.setValue('Last updated: ' + d.toLocaleString() + ' by ' + user);
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.