2017-04-07 43 views
1

我有谷歌表單(谷歌電子表格)的結果。我想編寫一個應用程序腳本來檢查每個列的字符串「是」。如果該列有該字符串,那麼我想將該列(或該列中的一個單元格)的背景顏色更改爲綠色。每次發送表單時,列的數量都會有所不同,因此需要檢查所有使用的列。(對不起,我的意思是每次發送一個類似的表單,並且每個表單都要使用相同的腳本,除了每次表單使用它可以返回不同數量的列 - 響應 - 感謝corn3lius)。這可以在Google表單回覆電子表格中完成嗎?這是我玩的代碼。 (庫珀的輸入更新的代碼)谷歌應用腳​​本來查找一個字符串並更改列背景顏色

function colchk(){ 
var ss = SpreadsheetApp.getActiveSheet(); 
var resp = ss.getDataRange().getValues(); 
for(var n=0;n<resp.length;n++) 
{ 
for(var p=0;p<resp[n].length;p++) 
{ 
if(resp[n][p].toString().match(/^YES/)){ ss.getRange(n+1,p+1).setBackground('#00ff00')}}}; 
}  
//this code works...Thanks Cooper! 
+0

你是什麼意思 「......每一個的形式發送時間」?你的意思是在電子表格中輸入迴應嗎? – corn3lius

+0

答案:是的。向我們展示編碼問題以幫助您。 –

+0

對不起,我的意思是我每次都發出了類似的形式,並希望使用相同的腳本上的每個人,除了形式使用它可以回來了不同數量的列 - 響應每一次 - 感謝corn3lius – user3096589

回答

1

試試這個:

if(resp[n][0].toString().match(/^YES/){ ss.getRange(n+1,1).setBackground('#00ff00') }; 

Perhap的是這樣的:

function colchk(){ 
var ss = SpreadsheetApp.getActiveSheet(); 
var resp = ss.getDataRange().getValues(); 
for(var n=0;n<resp.length;++n) 
{ 
    for(var p=0;p<resp[n].length;p++) 
    { 
    if(resp[n][p].toString().match(/^YES/){ ss.getRange(n+1,p+1).setBackground('#00ff00') }; 
    } 
}; 
+0

謝謝庫珀。這樣可行。我試圖添加一些東西來遍歷列,但它不工作。上面的代碼仍然只適用於第一列。 – user3096589

+0

謝謝庫珀。這工作。 – user3096589

1

既然我無法評論,我寫在這裏:

for(var n=0;n<resp.length;++n) 

應該是:

for(var n=0;n<resp.length;n++) 

++ N - >的n ++

打字太快了?

+1

我從來沒有在循環中實際使用++ n,但我相信它會在循環開始之前遞增索引。 – Cooper

0

基於關閉@coopers代碼 - 小編輯

function colchk(){ 
 
var ss = SpreadsheetApp.getActiveSheet(); 
 
var resp = ss.getDataRange().getValues(); 
 
for(var n=0;n<resp.length;n++) 
 
{ 
 
    for(var p=0;p<resp[n].length;p++) 
 
    { 
 
    if(resp[n][p].toString().match(/^YES/)) { 
 
     ss.getRange(n+1,p+1).setBackground('#00ff00') }; 
 
    } 
 
}};