Google apps scriptでメニューを追加する方法
Google apps scriptで自分が作ったスクリプトをスプレッドシートのメニューへ追加して実行する方法
onopen内でaddMenuを作成する。
参照元:https://developers.google.com/apps-script/guides/menus
Google apps scriptでスプレッドシートへカスタムメニューを追加のサンプル
function onOpen() {
//変数Eventへ配列を使ってスクリプトを割り当て
var Event=[
{name: "plan1登録", functionName: "Calendar_record"},//plan1にCalendar_recordを割り当て
{name: "plan2登録", functionName: "Calendar_record2"},//plan1にCalendar_record2を割り当て
{name: "シート選択",functionName:"sheet_choice"}//シート選択にsheet_choiceを割り当て
];
//ツールバーに新規メニュー追加して名前を”MyMenu”に
SpreadsheetApp.getActiveSpreadsheet().addMenu("MyMenu",Event); //メニューを追加
}
結果
スプレッドシートのメニューバー「ヘルプ」の右側に「MyMenu」が表示されて、プルダウンでplan1登録、plan2登録、シート選択のメニューが表示された。
まとめ
シート上でスクリプトの実行操作が出来るので重宝する。
Google apps scriptで列幅を自動調整する
Google apps scriptで列幅を自動調整するには
✔ autoResizeColumn(columnPosition)
参照元:Class Sheet | Apps Script | Google Developers
を使う。
Google apps scriptで列幅を自動調整する例
/*列幅を自動調整*/
function chuuouResize() {
var ss,sht,rng,col
ss = SpreadsheetApp.getActiveSpreadsheet();
sht = ss.getSheetByName('シート1');
//8列目の幅を自動調整
sht.autoResizeColumn(8);
}
結果
8列目のセル値の長さに合わせて列幅が広くなった。
まとめ
1列しか指定出来ないので、選択範囲を中央揃えにする時はfor loopなのかな。
Google apps scriptで中央揃えにする
Google apps scriptで中央揃えにするには
✔ setHorizontalAlignment(alignment)
名前:alignment
タイプ:String
説明:アライメント、どちらか'left'、'center'または'normal'。 null値は、アライメントをリセット
を使う。
Google apps scriptで中央揃えにする例
/*A1~J1000を中央揃え*/
function chuuou() {
var ss,sht,rng
ss = SpreadsheetApp.getActiveSpreadsheet();
sht = ss.getSheetByName('シート1');
rng = sht.getRange("A1:J1000");
rng.setHorizontalAlignment('center');
}
結果
Range("A1:J1000")が全て中央揃えになった。
まとめ
セルの中央揃えを行うと列幅に入り切らなくなるセルの値が出て来る。
列幅を自動調整するスクリプトもセットする必要がある。
Google apps scriptで行列を挿入・削除する
Google apps scriptで行列を挿入には
//行挿入
✔ sheetオブジェクト.insertRows(rowIndex)
//行挿入
✔ sheetオブジェクト.insertColumns(columnIndex)
を使います。
Google apps scriptで行列を挿入する例
/*行列挿入*/
function sounyuu(){
var ss,sht
ss = SpreadsheetApp.getActiveSpreadsheet();
sht = ss.getSheetByName('シート1');
sht.insertRows(1,4);
sht.insertColumns(1);
}
結果
1~4行目に4行挿入され、1列目に1列挿入されました。
Google apps scriptで行列を削除するには
//行削除
✔ sheetオブジェクト.deleteRows(rowPosition, howMany)
//列削除
✔ sheetオブジェクト.deleteColumns(columnPosition, howMany)
を使います。
Google apps scriptで行列を削除する例
/*行列削除*/
function gyouretusakujo(){
var ss,sht
ss = SpreadsheetApp.getActiveSpreadsheet();
sht = ss.getSheetByName('シート1');
sht.deleteRows(1,4);
sht.deleteColumns(1);
}
結果
1~4行目、1列目が削除されました。
まとめ
insertは挿入、deleteは削除 で覚えておく。
ただしdeleteは
メソッド Sheet.deleteColumns は推奨されていません。
とアラームが表示されるので今後別の方法を考えるのが望ましい・・
Google apps scriptで行列を固定・解除する
Google apps scriptで行列を固定する時は
- setFrozenRows(rows)
- setFrozenColumns(columns)
を使う。
Google apps scriptで行列を固定するスクリプト例
/*行と列の固定*/
function kotei(){
var ss,sht
ss = SpreadsheetApp.getActiveSpreadsheet();
sht = ss.getSheetByName('シート1');
sht.setFrozenRows(2);
sht.setFrozenColumns(8);
}
結果
2行目と8列目が固定される。
Google apps scriptで行列固定を解除するスクリプト例
/*行と列の固定解除*/
function koteiclear(){
var ss,sht
ss = SpreadsheetApp.getActiveSpreadsheet();
sht = ss.getSheetByName('シート1');
sht.setFrozenRows(0);//<-行の数値の場所に0を入力
sht.setFrozenColumns(0);//<-列の数値の場所に0を入力
}
結果
行と列の固定が解除された。
まとめ
固定解除する際は「clear」でなく、固定の行列数字に「0」を入力すればOK。
参照元:Class Spreadsheet | Apps Script | Google Developers
Goolge apps script 別シート参照してコピペ
Goolge apps script スプレッドシートの別シート参照してコピペする方法
openByIdメソッド
を使う。
Goolge apps scriptでスプレッドシートの別シートからコピペするスクリプト
function copypast() {
var ss,sht,sht2,sheet1,sheet2,rng,copy1
ss = SpreadsheetApp.getActiveSpreadsheet();
sheet1 = SpreadsheetApp.openById('1617Bh9s821I-Kop0w_c7EIl1IftBBjrUN-eC1fheXYc');
sheet2 = SpreadsheetApp.openById('1pvFS9K2TERuu8CnFcmo6oS8t9kzrrnkEKBY729UhVac');
//sheet1のシート1・A1:C10のセル値をコピー
sht = sheet1.getSheetByName('シート1');
rng = sht.getRange("A1:C10").getValues();
copy1 = rng.copy;
Logger.log(rng)
//sheet2のシート2へ貼付け
sht2 = sheet2.getSheetByName('シート2');
sht2.getRange("A1:C10").setValues(rng);//<-同じ範囲を指定する必要がある。
}
結果
sheet1の値("A1:C10")をsheet2のシート2へセット出来た。
まとめ
sheet2のシート2へ貼付け時、同じ範囲を指定する必要がある。
別の範囲に貼付けする際は
filter(String).length
を使ってアクティブな範囲をcopy、setする必要がある。