2014-10-03 28 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() 
    } 
} 

希望我能幫上忙!

相關問題