当前位置: 首页 > 知识库问答 >
问题:

GoogleSheets执行脚本onEdit

霍鸣
2023-03-14

我是新来的谷歌工作表脚本和卡住试图做以下事情。我有2列:C包含开始时间码,D包含结束时间码。第三列(F)包含从开始时间码和结束时间码产生的电影提示的长度。由于时间码来自脚本,因此包含结果的单元格不能导出为其他格式。因此,我试图创建第四列,将列F的结果打印为值。我设法写了一个小脚本,可以做到这一点。它看起来像这样:

function getRangeValuesEP01() {
 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var range = ss.getSheetByName("EP01").getRange('F3:F100').activate();
 var values = range.getValues();
 return values;
}; 

问题是,当我编辑C或D中的任何时间码时,它不会自动执行

所以我试了一下:

function onEdit(e) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet()
  var sheetName = sheet.getName();
  if ( sheetName == "EP02" || sheetName == "EP01" ) {
    var range = sheetName.getRange('F3:F100').activate();
    var r = sheetName.getActiveRange();
  if (r.getColumn() == 4 ) {
      var col = r.getColumn();
      if ( col >=  3 && col <= 100 ) {
        sheetName.getRange(r.getRow(),5);
        var values = range.getValues();
      }
    }
  }
 }

它没有给我任何错误,但它也没有做任何事情。这可能没有什么意义。正如我所说,我对这些脚本是新手。它没有考虑到在C列和D列中都要进行编辑。哦,或者只看F就足够了,因为当C列或D列发生变化时,F已经更新了它的结果?

也许有人能把我推向正确的方向?

共有1个答案

欧君之
2023-03-14

阅读评论:

function myonEdit(e) 
{
  var sheet=e.source.getActiveSpreadsheet();
  var sheetName=sheet.getName();
  if(sheetName=="EP02" || sheetName=="EP01") 
  {
    var r=sheet.getRange('F3:F100');//I made changes up to this point but the next line makes no sense so rethink it in light of changes
    if (r.getColumn()==4)//This line doesn't make any sense because you set range to F3:F100 F is column 6 so it will never be 4 
    {
      var col= r.getColumn();
      if ( col >=  3 && col <= 100 ) 
      {
        sheetName.getRange(r.getRow(),5);
        var values = range.getValues();
      }
    }
  }
}
 类似资料:
  • 问题内容: 我想从PHP脚本执行系统上存在的Bash脚本。我的系统上有两个脚本。其中一个是称为at at 的PHP脚本,另一个是称为at at 的Bash脚本。 我的client.php脚本看起来像 我的睾丸看起来像 当我在终端上执行以下操作时 我在终端上得到以下输出 但是当我在打开页面时 我得到以下输出 即使执行了chmod + x testscript,我仍然收到此错误。 我如何从浏览器中获取

  • 我试图从一个简单的BASH脚本执行一个简单的PHP脚本。这个网站上的答案不能回答我的问题。 这是我的BASH脚本 这是我的PHP脚本 从命令行运行BASH脚本时,出现以下错误。 我试过键入/usr/bin/php-q/home/username/subfolder/durable2。这很好。它跑起来了

  • 问题内容: 我正在尝试从Jenkins运行PowerShell脚本,但是它似乎完全忽略了执行策略!通过直接执行powershell.exe或使用PowerShell插件来实现 附加信息: Jenkins作为Windows服务运行(使用本地系统帐户,非交互式)。连接到该服务器并检查执行策略确实是: 但是,在运行Jenkins构建时,情况并非如此。这是在构建步骤中执行的输出: 我还尝试从构建步骤明确设

  • 问题内容: 如何自动执行给定文件夹中所有SQL脚本的运行过程? 问题答案: 编写Windows脚本,使用FOR构造遍历文件,并使用SQLCMD实用程序执行每个文件。

  • 开始之前 我们在开始之前先来介绍在windows平台中常用到的几种脚本 Bat 这就是我们常用的Bat脚本,全名为批处理文件,脚本中就是我们在CMD中使用到的命令,这里提一个小问题: CMD的命令行执行命令的优先级是.bat > .exe,那么假如我放一个cmd.bat在system32目录下,那么优先执行的是cmd.bat,这里面的内容就变得不可描述起来了 VBscript 执行vbs就是常说的

  • 问题内容: 假设我在网址“ http://mywebsite.com/myscript.txt”处有一个包含脚本的文件: 而且我想先运行该脚本而不先将其保存到文件中。我该怎么做呢? 现在,我已经看到了语法: 但这似乎不像我保存到文件然后执行时那样。例如,readline不起作用,而输出仅为: 同样,我尝试过: 具有相同的结果。 最初我有一个解决方案,例如: 但这似乎草率,我想要一个更优雅的解决方案