在閱讀了幾個關于無法使用應用程式腳本來檢索由公式產生的值的帖子之后,我懷疑我只是在這上面浪費了寶貴的時間。
通過腳本,我用 getDisplayValues() 檢索了一個 display 值陣列,用 getValues() 檢索了實際(我認為)值。每個陣列包括整個列,而實際上只有單元格 2-11 包含公式輸出。
試圖從陣列中檢索值的行為會回傳NULL。
var SpreadsheetID = "myID" 。
var SheetName = "mySheet";
function gammaTilt() {
var ss = SpreadsheetApp.openById(SpreadsheetID) 。
var sheet = ss.getSheetByName(SheetName)。
var column = sheet.getRange("AH1:AH"/span>)。
var dispVal = column.getDisplayValues(); // return array of full column, including display values.
var cellVal = column.getValues(); //回傳整列的陣列,包括實際(?)值。
var label = dispVal[0][0]; //回傳列標題,一個字串值。
var d = dispVal[11][0]; //回傳 null。
var a = cellVal[11][0]; //return null
};
AH列的長度是動態的,所以解決方案必須找到資料范圍的長度,然后找到范圍內的最后一個值。但似乎,應用程式腳本不能找到由公式創建的范圍?
這將是一個更為復雜的問題。
要做到這一點將復雜得多,但唯一可行的方法是開發一個適用于原始資料集的應用程式腳本,而不是對這些資料進行電子表格處理?
編輯。 cellVal的日志輸出
[21-09-1413。 02:33:500 DPT] Logging輸出太大。截斷輸出。
[[All Date] 。
[Sun Aug 29 17:00: 00 GMT-07:00 2021】。]
[Mon Aug 30 17:00: 00 GMT-07:00 2021】。]
[Tue Aug 31 17:00: 00 GMT-07:00 2021】。]
[Wed Sep 01 17:00: 00 GMT-07:00 2021】。]
[Thu Sep 02 17:00: 00 GMT-07:00 2021】。]
[Mon Sep 06 17:00。 00 GMT-07:00 2021】。]
[Tue Sep 07 17:00: 00 GMT-07:00 2021】。]
[Wed Sep 08 17:00: 00 GMT-07:00 2021】。]
[Thu Sep 09 17:00。 00 GMT-07:00 2021】。]
[Sun Sep 12 17:00: 00 GMT-07:00 2021】。]
[Mon Sep 13 17:00。 00 GMT-07:00 2021】。]
//陣列的其余部分是空單元格值。
作業表的實際單元格值:
AH1 All Date
AH2 Mon Aug 30 2021
AH3 Tue Aug 31 2021
AH4 Wed Sep 1 2021
AH5 Thu Sep 2 2021
AH6 Fri Sep 3 2021
AH7 Tue Sep 7 2021
AH8 Wed Sep 8 2021
AH9 Thu Sep 9 2021
AH10 Fri Sep 10 2021
AH11 Mon Sep 13 2021
AH12 Tue Sep 14 2021
知道為什么日期字串在回傳的陣列中被偏移嗎?
uj5u.com熱心網友回復:
在appScript中,指數從0開始(就像大多數編程語言一樣),所以cellVal[11][0]正試圖從AH12單元格中提取值。
如果您正在尋找來自 AH11 單元格的值,那就是 cellVal[10][0]
。另外,.getValues()并不拉動公式,所以你使用它是安全的,你不需要使用.getDisplayValues()
。uj5u.com熱心網友回復:
試試這個:
var d = dispVal[11] [0] 。
var a = cellVal[11] [0]。
Update
至于日期中的'offset'。我確信這與電子表格設定中的時區偏好有關。
看,我已經做了一個函式,可以抓取你的日期并將其轉換為日期物件:
function test_dates() {
var sheet = SpreadsheetApp.getActiveSheet()。
var range = sheet.getRange('A1:A11')。
var dates = range.getValues(). map(x => [new Date(x[0])]; //string --> objects
range.offset(0, 1).setValues(dates)。
}
如果我設定時區GMT 00,我就會得到 "偏移":
至于'空'的回傳,對不起。除非沒有可重復的代碼 假資料,否則無法猜測。我用我的資料試了一下你的代碼,它作業得很好。它回傳單元格[11][0]中的值,不管這個值是靜態的還是通過公式計算的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/319358.html
標籤:
下一篇:用css創建線條加載影片


