![](/img/trans.png)
[英]How to insert the string in the next empty cell when found no match (GAS)?
[英]GAS: how to adapt this piece of code to change cell value only if it's empty?
我編寫了一個函數,該函數從電子表格的原始文本中提取一些所需的信息,並將其放在其他列中。 但我只想在該列為空時使用此函數(因為如果不為空,是因為其值是手動更新的)。 我嘗試使用下面的代碼,但是我發現s.getRange(2, 8, output.length, 1).getValue()
不會告訴我給定的單元格是否為空。 那么,鑒於下面的代碼,我該如何實現?
var output = [];
for (var i = 0; i < input.length; i++) {
output.push([ findDate(input[i][0], 'myKeyWord:', -4, -3) ]);
Logger.log("s.getRange(2, 8, output.length, 1).getValue() = " + s.getRange(2, 8, output.length, 1).getValue())
if(s.getRange(2, 8, output.length, 1).getValue()){
s.getRange(2, 8, output.length, 1).setValues(output); // 8 is col H
}
如果我正確理解了您的用例,則可以使用以下條件,它將檢查單元格中是否有值(並且還可以防止單元格中任何空間的意外出現(有些人習慣於將白色單元格中的空格以刪除內容而不是清除單元格)
if(s.getRange(2, 8, output.length, 1).getValue().toString().replace(/ /g,'').length > 0){
...
}
編輯:以下@sscholefield評論:
當回答這個問題時,我確實很猶豫,想知道您是否必須檢查列或單個單元格...因為在談論手動編輯單元格的地方,我選擇了單個單元格,但看來我可能錯了...
如果你想檢查整列是空的,你可以修改代碼和替換getValue()
用getValues()
...詛咒這會不會是在比較充足,在這種情況下,想法是比較數組長度與“展平”數組的長度,如果為空(長度= 3),則后者類似於",,,"
,並且同一示例的數組長度為[[],[],[],[]]
(長度= 4)。
如您所見,我們有一個可以捕捉的長度差。
請告訴我們這是否可以解決問題。
我建議使用記錄器來准確查看您要比較的內容並做出相應的決定。
注意: 順便說一句,謝謝您的客氣,寫書是我正在認真考慮的事情,但是現在它仍然是一個項目,應該保密(哈哈... ;-)什么?互聯網 ? 我的天啊 ! 沒意識到...)
我無法發表評論,因此我需要在這里寫下,但是它更多的是觀察,而不是答案,並且與Serge的角度略有不同。
根據'output.length'的值,您要獲取一個多行數組,但是您使用getValue()而不是getValues()僅從該范圍的左上角單元格返回單個值。 這是您所期望的嗎?
如果需要檢查整個列是否為空,最好使用getValues()對該列創建一個數組,然后檢查該數組的長度是否為零(對於標題,請記住為-1)。
不幸的是,這將意味着兩階段檢查if(array.length-1!= 0),因為您必須迭代檢查是否array [i] ==''(空白)。 如果找到空格,則可以清除()范圍或更改數組,然后使用setValues()將其放回到列中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.