LANG SELRCT

コードを書く場所

2016年7月13日水曜日

行・列を非表示にする

行と列を非表示にするコードを書いてみました。

1行目を非表示にする


コード.gs
function hiderow() {
    var sh = SpreadsheetApp.getActiveSheet();
    sh.hideRows(1);
}


1列目を非表示にする


コード.gs
function hidecol() {
    var sh = SpreadsheetApp.getActiveSheet();
    sh.hideColumns(1);
}


行と列の非表示を解除する


ここではすべての行と列を取得しました。
var last_row = sh.getRange("A:A").getLastRow();
var last_col = sh.getRange("1:1").getLastColumn();
var range = sh.getRange(1, 1, last_row, last_col);

コード.gs
function unhide() {
    var sh = SpreadsheetApp.getActiveSheet();
    var last_row = sh.getRange("A:A").getLastRow();
    var last_col = sh.getRange("1:1").getLastColumn();
    var range = sh.getRange(1, 1, last_row, last_col);
    sh.unhideRow(range);
    sh.unhideColumn(range);
}



A列で0の行だけを非表示にする


valuesを数値にして、厳密等価演算子 === で0と比較しました。
(等価演算子 == だと空欄もtureを返してしまうため)
if (parseInt(values[i], 10) === 0)

コード.gs
function hiderow_0() {
    var col = "A";
    var sh = SpreadsheetApp.getActiveSheet();
    var range = sh.getRange(col + ":" + col);
    var values = range.getValues();
    var last_row = sh.getLastRow();
    for (var i = 0; i < last_row; i++) {
        if (parseInt(values[i], 10) === 0) {
            sh.hideRows(i + 1);
        }
    }
}


1行目が0の列を非表示にする


hiderow_0と同様、厳密等価演算子 === で0と比較しました。
ここではvalues[i]では動かないため、values[0][i]にしました。
if (parseInt(values[0][i], 10) === 0)

コード.gs
function hidecol_0() {
    var row = 1;
    var sh = SpreadsheetApp.getActiveSheet();
    var range = sh.getRange(row + ":" + row);
    var values = range.getValues();
    var last_col = sh.getLastColumn();
    for (var i = 0; i < last_col; i++) {
        if (parseInt(values[0][i], 10) === 0) {
            sh.hideColumns(i + 1);
        }
    }
}


2016年7月10日日曜日

split関数のfalseオプション

Google Apps Scriptではありませんが、スプレッドシートのsplitについて今日知ったことです。

区切り文字が2文字以上の場合、falseをつけないと1文字ごとに分割される。

=split("文字列", "区切り文字", false)


公式のヘルプページに書いてありました。
  • デフォルトでは、区切り文字の各文字が個々に検証されます。たとえば、区切り文字に "the" を指定した場合、テキストは "t""h""e" の文字で分割されます。各文字での分割を FALSE に指定すると、この動作をオフにできます。

参考サイト
https://support.google.com/docs/answer/3094136?hl=ja


2016年7月7日木曜日

折り返しを設定するrange.setWrap(true)


Google Apps Scriptで折り返し設定をしたくて調べて書いてみたコードです。




コード.gs
function myFunction() {
 var sheet = SpreadsheetApp.getActiveSheet();
 var range = sheet.getActiveRange();
 range.setValue("テキストが長い場合に折り返して表示することができるようになる。").setWrap(true);
}



英数のみでスペースがないとうまく折り返しができなかった。。
例えば"abcdefghijklmnopqrstuvwxyz"というのを最初に例として書いてみましたが、うまく行かなかったので、全角の日本語で"テキストが長い場合に折り返して表示することができるようになる。"というテキストを例にしました。

ちなみにtrueがあればfalseもあり、falseにすると折り返しをしなくなります。

折り返しあり .setWrap(true) 
折り返しなし .setWrap(false)

というわけで今回は折り返しの設定をする.setWrap(true)を書いてみました。