2

我與當地的一家賽車俱樂部合作,並且確定時間。我們的定時齒輪輸出時間爲分鐘:Seconds.Milliseconds(MM:SS.MS)並想輸入該號碼,但有一個細胞自動轉換成Seconds.Milliseconds(ss.ms)格式,所以我可以輕鬆地做一些計算。我也想還是輸入sms格式。在Google表格中將基數60轉換爲基數10 with apps script onEdit // MM:SS.MS to SS.MS

實施例:

表 「時間」,列E,F,G,H,和任何行是其中I輸入的所有次。所以如果我在E3單元格中粘貼1:24.78的時間,我希望它在同一個單元格中轉換爲84.78。

我能夠創建一個函數來將MM:SS.MS轉換爲SS.MS,但我想定義一個區域,當我在一個單元格中輸入MM:SS.MS時,它會自動獲取轉換onEdit在同一個單元格中。

function MTS() { 
    var value = arguments[0].split("."); 
    var time = value[0].split(":"); 
    var ms  = parseInt(value[1],10); 
    var seconds = parseInt(time[time.length-1],10); 
    var minutes = parseInt(time[time.length-2],10); 
    var hours = parseInt(time[time.length-3],10); 

    var output = (minutes * 60) + seconds + '.' + ms; 

    return output; 

}; 

這裏是有問題的谷歌電子表格的鏈接:

https://docs.google.com/spreadsheet/ccc?key=0AoFFjAyGmvrydGQ5VVd6cXJWTjJMZkhsRkc3bFplOXc&usp=sharing

+0

它看起來可能通過編寫使用編輯事件處理程序的插件:https://developers.google.com/apps-script/understanding_events –

+0

這就是我的想法,但我不是傾向於弄清楚如何結合這兩個要素。 –

回答

0

呼叫MTS(e)onEdit像代碼現在。使用傳遞的現有電子表格對象(由e表示)將值設置迴轉換後編輯的相同範圍。 e.range.setValue(output);

+0

感謝Bryan P看看我的示例電子表格並搞亂了腳本!我對GAS相當陌生,這一件事讓我煩惱了好幾天。 –

+0

快速問題,我怎樣才能指定一個特定的工作表,我希望這個工作?我知道getSheetByName(SheetName),但不知道在哪裏放置它。我會喋喋不休,看看我是否也能弄清楚。 –

+0

您必須將其作爲我提供的IF語句中的另一個條件添加。 '&& e.source.getActiveSheet()。getName()=='Sheet 1'' –

0

對於可能偶然發現的人來說,下面是Bryan P想出來解決我發佈的確切問題。

function onEdit(e) { 

    if (e.range.getValue() && 
     /^(5|6|7|8)$/.test(e.range.columnStart) && 
     e.range.columnStart == e.range.columnEnd && 
     e.range.rowStart == e.range.rowEnd) { 

     MinutesToSeconds(e);  
    } 
}; 


function MinutesToSeconds(e) { 

    var value = e.range.getValue().split("."); 
    var time = value[0].split(":"); 
    var ms  = parseInt(value[1],10); 
    var seconds = parseInt(time[time.length-1],10); 
    var minutes = parseInt(time[time.length-2],10); 
    var output = (minutes * 60) + seconds + '.' + ms; 

    e.range.setValue(output); 

    return; 
}; 

這隻能轉換到分鐘,你可以再添變數在MinutesToSeconds「小時」()函數。然後改變變量「輸出」中的數學。

var hours = parseInt(time[time.length-3],10); 

如果有人知道如何做幾個小時的數學,即使沒有數據可以隨時發佈。

因爲如果我這樣做

var output = (hours * 60) * (minutes * 60) + seconds + '.' + ms; 

並沒有和「時間」的數據,它提供了NaN的錯誤。

相關問題