2016-12-18 14 views
1

私はGoogleスクリプトの初心者で、私が今質問しているものと同様の質問をレビューしましたが、大砲は私が探しているものに事前のアドバイスをあてはめているようです。シートのA2セルに「はい/いいえ」という単純なドロップダウンがあります。 「はい」を選択した場合、私は、行5と7を非表示にしたいと思い、私は以下の作業をされています:Googleシート:セル値に基づいて行を非表示

Prior Year my onEdit(e) { 
    Logger.log('e.value: ' + e.value); 

var cellEdited = e.range.getA1Notation(); 
Logger.log('cellEdited: ' + cellEdited); 

if (cellEdited === "A2" && e.value === "yes") { 

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheetByName("TX MD 2017"); 
var maxRows = sheet.getMaxRows(); 

theSheet.hideRows(5,7); 
}; 
} 

どのような援助やnudgesは非常に参考になります。

答えて

0

コードケースあなたはオプションが「Y」は大文字であることと、「はい」/「いいえ」であることについて話してプロジェクトの説明では

好き嫌いです。これが本当に当てはまる場合は、e.value === 'yes'は期待どおりに機能しません。それらを比較するとき、同じケースを文字列を作るにしてください:

`e.value.toLowercase() === 'yes'` 

間違っ機能:Sheet.hideRows

hideRowsためのAPIは、最初のパラメータから開始する行、2番目のパラメータがあると述べています開始行の後に隠れる行の数です。これにより、コードが7行下に隠れ、5行目も含めて非表示になります。あなたが行5と7を非表示にしたい場合は、あなたが行う必要があります。

theSheet.hideRow(5); 
theSheet.hideRow(7); 

避け、不要な権限

使用を追加するスクリプトがアクセスできるようにする必要がありますので、SpreadsheetApp.getActiveSpreadsheetあなたはそれを作ると、スプレッドシートを変更します。これにより、セキュリティ/保護の原則であるが最小特権であるが破られます。通常、ユーザーはタスクを完了するために最小限のアクセスを可能にしたいと考えています。私

var ss = e.source; 
var sheet = ss.getSheetByName("TX MD 2017"); 

// You don't use maxRows, so get rid of it 
sheet.hideRow(5); // theSheet is not defined 
sheet.hideRow7); 

前年度:あなたはe.sourceを使用してイベントオブジェクト内のスプレッドシートにアクセスすることができますので、それだけで代わりにすることを使用することをお勧めでしょうか?

これは有効なJavaScriptではありません。それは:

function onEdit(e) { 
    // code 
} 
関連する問題