我需要在onEdit中运行Google App脚本 [英] i need to run Google App script in onEdit

查看:81
本文介绍了我需要在onEdit中运行Google App脚本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试创建一个脚本,以便当我在A列中编辑文本时,它会自动删除同一行D列中的文本,以及C列是否在同一行中(它包含我的文件ID)驱动器)不是空的,然后删除该文件。

I'm trying to create a script so that when I edit text in column A then it automatically deletes text that is in column D of the same row and if column C in the same row (it contains ID of file from my drive) is not empty then delete that file.

我成功创建了该文件,并且在测试中显式运行脚本时它可以正常工作,但是onEdit事件似乎从未被触发(甚至看不到日志消息)。
有人知道它是如何工作的吗?

I successfully created it and it's working when explicitly run the script in test , but the onEdit event never seems to get fired (not seeing log messages even). anyone have an idea how it works ?

    function onEdit(e) {
  var currentSheet = e.range.getSheet();
  var sheetEdited = currentSheet.getName();
  var rowEdited = e.range.getRow();
  var columnEdited = e.range.getColumn();

  // if cell edited in sheet name form 1 and in column 1 then
  if(sheetEdited == "form 1" && ( columnEdited == 1)){ 
  // delete text in edited row column D
    currentSheet.getRange(rowEdited,4).setValue('');
  // if on edited row column C(that contain doc id ) if filled then detele that file 
   if (sheetId != "") {
         var sheetId = currentSheet.getRange(rowEdited,3).getValues();
         DriveApp.getFileById(sheetId).setTrashed(true);
    }
  }
}

推荐答案

问题是简单的触发器无法执行需要授权的操作。因此,您必须使用可安装触发器。不要忘记更改函数的名称。

The problem is that simple triggers can't perform operations that require authorization. So you have to use an installable trigger. Don't forget to change the name of the function.

function onEdit(e) {
  var sh = e.range.getSheet();
  if(sh.getName()=="form 1" &&  e.range.columnStart==1){ 
    sh.getRange(e.range.rowStart,4).setValue('');//D
    var id=sh.getRange(e.range.rowStart,3).getValue();//C
    if(id!="")DriveApp.getFileById(id).setTrashed(true);
  }
}

这篇关于我需要在onEdit中运行Google App脚本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆