按特定单元格值触发脚本

时间:2014-10-03 21:56:54

标签: google-apps-script

我是google sheet脚本开发的新手,我想知道如何使用单元格值触发clearAll脚本,即A1 = 100。 我的clearAll脚本可以工作(见下文),但我不知道要添加什么来使用特定的单元格值来触发它。

function clearAll() {
 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var formresponses1 = ss.getSheetByName("formresponses1");
formresponses1.clearContents();}

由于

2 个答案:

答案 0 :(得分:1)

如果你试图这样做,那么每当有人输入" 100"的值时,它就会清除整张纸的内容,然后你可以这样做:

function onEdit(e) {
  var ss = SpreadsheetApp.getActive()          //gets the active spreadsheet
  var sheet = SpreadsheetApp.getActiveSheet()  //gets the active sheet
  var cell = ss.getActiveRange()               //gets the active cell
  var cellContent = cell.getValue()            //gets the value of the active cell

  if(cellContent === 100) {
    sheet.clearContents()                      //clears the values of the entire active sheet
  }
}

如果你想这样做的话,每当有人编辑单元格并使其值为#34; 100"时,代码只清除那个单元格,然后执行以下操作:

function onEdit(e) {
  var ss = SpreadsheetApp.getActive()
  var sheet = SpreadsheetApp.getActiveSheet()
  var cell = ss.getActiveRange()
  var cellContent = cell.getValue()

  if(cellContent === 100) {
    cell.setValue("")              //clears the value of the active cell
  }
}

当然,在后者中,由于Google脚本略有滞后,如果有人在每个单元格中快速输入100,那么一些单元格的值为" 100"将留在那里,但如果这个人像正常人而不是垃圾邮件发送者那样把价值观,那么这个代码就可以了。

另外,如果你试图使它成为某个单元格的值(即:A1)等于" 100,"脚本清除整个工作表,执行以下操作:

function onEdit(e) {
  var ss = SpreadsheetApp.getActive()
  var sheet = SpreadsheetApp.getActiveSheet()
  var cell = sheet.getRange('A1')
  var cellContent = cell.getValue()

  if(cellContent === 100) {
    sheet.clearContents()
  }
}

希望我能帮忙!

答案 1 :(得分:0)

onEdit 触发器会在编辑电子表格中的 任何 单元格时运行。

Google Documentation - Spreadsheet On Edit

还有更改触发器。它是一个可安装的触发器,而不是一个简单的触发器。

Available types of triggers

来自文档:

  

当用户修改结构时,会运行可安装的更改触发器   电子表格本身 - 例如,通过添加新工作表或   删除列。

我认为唯一适合您的是 On Edit 触发器。触发器从Apps脚本代码编辑器中的资源菜单设置。

我认为您不能限制代码仅运行到某个单元格或单元格中的某个值。每次编辑任何单元格时都会运行代码。

我认为唯一的另一种选择是运行基于时间的触发器,并让脚本获取该单元格的值,并检查该值。您可以使用的最短时间间隔是每分钟运行一个脚本。因此,如果您在第二个1上编辑了单元格,那么在发生任何事情之前还需要59秒。

如果您有某种类型的用户界面,并且当用户在输入字段中输入值时,该单元格中的值被写入,您可以立即检测到该更改,并使某些事情发生。