2014-10-03 89 views
0

我对Google表单脚本开发非常新颖,并且想知道如何触发一个clearAll脚本,其单元格值为A1 = 100。 我的clearAll脚本可以工作(请参阅下文),但我不知道要使用特定的单元格值来添加它以触发它。通过特定单元格值触发脚本

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

由于

回答

0

电子表格中的任何小区被编辑的onEdit触发运行。

Google Documentation - Spreadsheet On Edit

还有一个变化触发。这是一个可安装的触发器,而不是一个简单的触发器。从文档

Available types of triggers

引用:

当用户修改电子表格本身的结构 可安装的变化触发运行 - 例如,通过添加新的片材或 删除列。

我认为唯一对你有用的是On编辑触发器。触发器从Apps脚本代码编辑器中的Resources菜单中设置。

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

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

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

+1

如果解决了[此问题3496](https://code.google.com/p/google-apps-script-issues/issues/detail?id=3496),您可以检查哪个单元格触发了onEdit,并且当它不是你想要的时候,什么都不会返回......不幸的是,它不是...... – 2014-10-05 21:39:02

+0

看起来像这个问题在2014年10月7日关闭 – 2014-10-07 15:33:26

+0

事实上,我今天早上收到一条消息,告诉问题已修复。感谢您指出了这一点 :-) – 2014-10-07 15:43:19

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 
    } 
} 

如果你想让这个每当有人编辑的单元格,使得其值“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 
    } 
} 

当然,在后者,由于轻微的滞后谷歌脚本,如果有人迅速投入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() 
    } 
} 

希望我能帮上忙!

相关问题