Google apps script 按特定单元格值触发脚本

Google apps script 按特定单元格值触发脚本,google-apps-script,Google Apps Script,我对GoogleSheets脚本开发非常陌生,我想知道如何触发单元格值为A1=100的clearAll脚本。 我的clearAll脚本可以工作(见下文),但我不知道要添加什么来使用特定的单元格值触发它 function clearAll() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var formresponses1 = ss.getSheetByName("formresponses1"); formresponses1.clea

我对GoogleSheets脚本开发非常陌生,我想知道如何触发单元格值为A1=100的clearAll脚本。 我的clearAll脚本可以工作(见下文),但我不知道要添加什么来使用特定的单元格值触发它

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

谢谢

当电子表格中的任何单元格被编辑时,onEdit触发器将运行

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

引用文件:

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

我认为唯一对你有用的是编辑时的触发器。触发器从应用程序脚本代码编辑器中的资源菜单中设置

我不认为您可以限制代码只运行到某个单元格,或者某个单元格中的某个值。每次编辑任何单元格时,代码都将运行

我认为唯一的替代方法是运行基于时间的触发器,让脚本获取该单元格的值,然后检查值。可以使用的最短时间间隔是每分钟运行一次脚本。因此,如果在第1秒编辑单元格,则需要59秒以上的时间才能发生任何事情


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

如果您试图使其发生变化,以便无论何时有人输入值“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
  }
}
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
  }
}
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()
  }
}
如果要使其在有人编辑单元格并使其值为“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
  }
}
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
  }
}
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()
  }
}
当然,在后一种情况下,由于谷歌脚本的轻微滞后,如果有人在每个单元格中快速输入100,那么一些值为“100”的单元格将留在那里,但如果该人像普通人而不是垃圾邮件发送者一样输入值,那么该代码将起作用

此外,如果试图使某个单元格(即:A1)的值等于“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
  }
}
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
  }
}
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()
  }
}

希望我能帮忙

如果问题解决了,您可以检查哪个单元格触发了onEdit,当它不是您想要的单元格时,只需不返回任何内容。。。不幸的是,它不是……看起来这个问题是在2014年10月7日解决的。事实上,我今天早上收到一条消息,告诉我这个问题已经解决了。谢谢你指出这一点:-)