1

我有一個腳本,我在測試環境中通過解析年份從時間戳和填充響應索引來編程創建跟蹤編號。形式爲nnnn-nnnn的字符串作爲日期或其他方式顯示在電子表格中

function setTrackingNumber(ss, lastRowInx, createDateColumn) //This block generates and stores a tracking number in Column AU on the backend 
{ 
    var padTrackNo = "" + lastRowInx; 
    var trackSize = 4; 
    var trackingNumberColumn = createDateColumn-3; //trackingNumberColumn is currently in AU (Column 47) Calculating using it's relative position to createDateColumn Position 

    if (ss.getRange(lastRowInx, trackingNumberColumn).getValue() == "") // so that subsequent edits to Google Form don't overwrite original tracking number 
    { 
    if (padTrackNo > trackSize) 
    { 
     var padTrackNo = pad(padTrackNo, trackSize); 
    } 
    else {} //do nothing 

    var shortYear = setShortYear(ss, lastRowInx, createDateColumn); 
    var trackingNumber = shortYear + "-" + padTrackNo; 
    var createTrackingNumber = ss.getRange(lastRowInx, trackingNumberColumn); 
    createTrackingNumber.setValue(trackingNumber); 
    } 
    else {} //should do nothing 
    return; 
}//This is the end of the setTrackingNumber function 

function setShortYear(ss, lastRowInx, createDateColumn) 
{ 
    var newCreateDate = ss.getRange(lastRowInx,createDateColumn).getValue(); 
    var strDate = "" + newCreateDate; 
    var splitDate = strDate.split(" "); 
    var trimYear = splitDate[3]; 
    var shortYear = trimYear; 

    return shortYear; 
}//This is the end of the shortYear function 

function pad(padTrackNo, trackSize) 
{ 
    while (padTrackNo.length < trackSize) 
    { 
     padTrackNo = "0"+padTrackNo; 
    } 
    return padTrackNo; 
}//This is the end of pad function 

這得到我test result這是預期的前。 2016-0005。但是,當我們將其添加到另一張製作表時,它似乎可以與測試數據一起使用,然後生產數據顯示爲2016年3月1日的日期。 production result - first cell

我以爲它只能格式化字符串作爲日期,因爲數字,所以我嘗試格式化列作爲純文本,但只是將日期更改爲純日期版本的日期。

我想這可能是類似需要到指定的格式就像我在這個問題Appending initial timestamp from Google Form to end of record in order to permanently store create date onFormSubmit在@SandyGood的建議做了,所以我嘗試改變

createTrackingNumber.setValue(trackingNumber); 
設置數字格式爲[0000-0000]

createTrackingNumber.setValue(trackingNumber).setNumberFormat("0000-0000"); 

這就造成了[生產結果 - 第二小區]其中再次不預期的結果相匹配。

奇怪的是,一些提交似乎工作得很好,就像[生產結果 - 第三個單元格]一樣。在過去的三天裏,大約有10條記錄,這很好,然後很狡猾,然後很好,他們很狡猾,然後再次罰款。我不太確定還有什麼可以嘗試調試這種奇怪的行爲。

注意:我必須將日期解析爲字符串,因爲我無法從創建日期(從初始時間戳記中獲取)正確解析日期。

回答

0

據我的理解,「2016-0005」不是一個數字而是一個字符串,所以包含它的單元格應該被格式化爲純文本。一個腳本,這可以通過

range.setNumberFormat('@[email protected]') 

source)來完成,並且您將值設置爲小區在此之前必須完成。像這樣:

createTrackingNumber.setNumberFormat('@[email protected]').setValue(trackingNumber); 
相關問題