Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 如何使用Google sheets中的(onEdit)功能基于单个用户创建条件格式。(每次变动)_Google Apps Script - Fatal编程技术网

Google apps script 如何使用Google sheets中的(onEdit)功能基于单个用户创建条件格式。(每次变动)

Google apps script 如何使用Google sheets中的(onEdit)功能基于单个用户创建条件格式。(每次变动),google-apps-script,Google Apps Script,我正在寻找我需要输入到GoogleSheets脚本编辑器中的脚本或代码,这些脚本或代码将在将来由不同的用户进行编辑,并以不同的颜色显示。类似于修订历史的工作方式 我没有编码的专业知识,所以如果有什么不清楚,一定要问 我自己发现了一些信息,并认为我应该使用: OneEdit触发器和Session.getactiveuser.getemail我不知道如何在单元格中选择文本并通过编程更改其颜色。我猜这是不可能的,即使它可以用编辑器来完成。但这是我到目前为止所拥有的,欢迎你自己拿着它跑 function

我正在寻找我需要输入到GoogleSheets脚本编辑器中的脚本或代码,这些脚本或代码将在将来由不同的用户进行编辑,并以不同的颜色显示。类似于修订历史的工作方式

我没有编码的专业知识,所以如果有什么不清楚,一定要问

我自己发现了一些信息,并认为我应该使用:


OneEdit触发器和Session.getactiveuser.getemail

我不知道如何在单元格中选择文本并通过编程更改其颜色。我猜这是不可能的,即使它可以用编辑器来完成。但这是我到目前为止所拥有的,欢迎你自己拿着它跑

function onEdit(e) {
  var sh=e.range.getSheet();
  if(sh.getName()!='Sheet1') return;
  if(e.oldValue && e.value) {
    var oldA=String(e.oldValue).split("");
    var newA=String(e.value).split("");
    sh.getRange('A2').setValue(oldA.join(','));
    sh.getRange('A3').setValue(newA.join(','));
    sh.getRange('A4').setValue(getChange(oldA,newA));                           
  }
  sh.getRange('A1').setValue('value: ' + e.value + ' oldValue: ' + e.oldValue)
}

function getChange(oldA,newA) {
  var oldA=oldA || 'This is the oldA'.split("");
  var newA=newA || 'This is the newA'.split("");
  var start=-1;
  var end=-1;
  for(var i=0;i<oldA.length;i++) {
    if(oldA[i]!=newA[i]) {
      start=i;
      break;
    }
  }
  oldA.reverse();
  newA.reverse();
  for(var i=0;i<oldA.length;i++) {
    if(oldA[i]!=newA[i]) {
      end=newA.length-i;
      break;
    }
  }
  newA.reverse();
  var rv=newA.slice(start,end).join('');
  return rv;
}

我一直在使用A1:A4从onEdit函数获取反馈信息

谢谢@cooper。我想尝试一下,但当我输入它时,它说,第二行代码中提到的工作表范围尚未定义。我发现的代码有一个类似的问题:函数onEdit{var ss=sheetApp.getActiveSheet;var sheet=ss.getActiveSheet;//获取活动用户的电子邮件地址var EMAIL=Session.getActiveUser.getEmail;Logger.logemail;//根据活动用户预定颜色表的颜色高亮显示上次编辑的单元格。getRange.setBackgroundColor;}但我不知道此代码是否有效/良好。如果没有事件对象,则无法执行此代码。因此,您无法像其他任何函数一样从脚本编辑器执行它。最好只需编辑适当的页面即可按预期运行。