目次
コメント
// 1行コメント
/*
複数行にまたがるコメント
*/スプレッドシートOBJ(ss)を取得
const ss = SpreadsheetApp.getActiveSpreadsheet();
const ss = SpreadsheetApp.openByUrl("url");
const ss = SpreadsheetApp.openByID("スプレッドシートID");シートOBJ(sh)を取得(直接取得)
const sh = SpreadsheetApp.getActiveSheet();シートOBJ(sh)を取得(ss経由)
const sh = ss.getSheetByName('SheetName');
or
const sh = ss.getSheets(); // 戻り値:配列シートIDの取得
const gid = sh.getSheetId();
// SheetIDはURLの末尾 "edit#gid="の後ろにある数値SS名およびsh名の取得
sh.getName(); // getName()はsh,ssで利用可
ss.getName();シートのセル範囲を取得
sh.getRange('A1')
sh.getRange(1, 1)
sh.getRange('A1:C5')
sh.getRange(1, 1, 行幅, 列幅)シートの全範囲を取得
const range = sh.getDataRange();
or
const range = sh.getRange(1, 1, sh.getLastRow(), sh.getLastColumn());範囲の値を取得
const value = sh.getRange('A1').getValue();
const values = sh.getRange(1, 1, 2, 2).getValues(); // <- 末尾ああああsあり
const values = sh.getDataRange().getValues();範囲にデータをセット
sh.getRange('A1').setValue('aaa');
const values = sh1.getDataRange().getValues(); // sh1を取得し
sh2.getRange(1, 1, values.length, values[0].length).setValues(values); // sh2の同じ範囲wを取得し貼り付け行列番号の開始位置
位置情報:(1, 1)から開始
値の取得:(0, 0)から開始行列の削除
■行の削除
sh.deleteRow(5) // 5行目を削除
sh.deleteRows(3, 2) // 3行目〜4行目を削除
■列の削除
sh.deleteColumn(3)
sh.deleteColumns(3, 2) //3列目〜4列目を削除セルの値を見たまま文字列で取得
const val = sh.getRange(1,1).getDisplayValue()
cont vals = sh.getRange(1,1,2,2).getDisplayValues() //2次元配列行列数の取得
const cell = sh.getRange('A3');
cell.getRow();
cell.getColumn();コピー
const sh = ss.getActiveSheet();
// A1をコピーしてB1にペースト
sh.getRange('A1').copyTo(sh.getRange('B1'));
// A2:B2をコピーしてC2にペースト
sh.getRange('A2:B2').copyTo('C2');
// A3をコピーしてB3に「書式のみ」ペースト
sh.getRange('A3').copyTo(sh.getRange('B3'), {formatOnly: true});
// A4をコピーしてB4へ「値のみ」ペースト
sh.getRange('A4').copyTo(sh.getRange('B4'), {contentsOnly: true});アドレスの取得(R1C1形式)
const rng = sh.getRange(1,1,2,2);
console.log(rng.getA1Notation());
// A1:B2書式の指定
const rng1 = sh.getRange('A1'); // 2021年08月26日、とする
rng1.setNumberFormat('yyyy/MM/dd'); // 2021/10/26へ変換
rng1.setNumberFormat('yyyy年m月d日'); // 2021年8月26日へ変換
const rng2 = sh.getRange('B1'); // 1000、とする
rng2.setNumberFormat('[$¥]#,##0'); // ¥1,000へ変換 SSのURL取得
SpreadsheetApp.getActiveSpreadsheet().getUrl();
// SSのリンク全体を取得
Spreadsheetオブジェクト.getUrl() + '#gid=' + Sheetオブジェクト.getSheetId()MSG Box
alert
Uiオブジェクト.alert(prompt)
Uiオブジェクト.alert(prompt, buttons)
Uiオブジェクト.alert(title, prompt, buttons)
const ui = SperadsheetApp.getUi();
const res1 = ui.alert('MSG');
const res2 = ui.alert('MSG', ui.ButtonSet.OK_CANCEL);
const res3 = ui.alert('TITLE', 'MSG', ui.ButtonSet.YES_NO);
戻り値はLogger.log()でないと見れないfunction myAlert(){
let ui = SpreadsheetApp.getUi();
let response = ui.alert(
'テスト',
'どれかボタンをお押して',
ui.ButtonSet.YES_NO
);
switch(response){
case ui.Button.YES:
console.log('"はい"が選択されました');
break;
case ui.Button.NO:
console.log('"いいえ"'が選択sされました');
break;
case ui.Button.CLOSE:
console.log('閉じます');
}
}テキスト入力式のダイアログBOX
const ui = SpreadsheetApp.getUi();
const res1 = ui.prompt('MSG');
const res2 = ui.prompt('MSG', ui.ButtonSet.OK_CANCEL);
const res3 = ui.prompt('TITLE', 'MSG', ui.ButtonSet.YES_NO);
戻り値 PromptResponse
// PromptResponseオブジェクトkからの情報の取り出し方
console.log(res3.getResponseText());曜日を取得
function dayOfWeek(dataObj){
let dayOfWeekArray = ["日","月","火","水","木","金","土"];
if(dataObj){ // ←空の場合、Error?
let weekNum = dataObj.getDay();
let dayOfWeek = '(' + dayOfWeekArray[weekNum] + ')';
return dayOfWeek;
} else {
;
}
}MM/DD形式を取得
function dateFormated(dateObj){
if(dataObj){
return Utilities.foramtDate(dateObj, "Asia/Tokyo", "MM/dd");
} else {
;
}
}
■cf)
let date = new Date(); // Sun Aug 05 2018 15:27:05 GMT+0900
date.getFullYear() //2018
date.getMonth() //7(=8)月
date.getDate() // 5
date.getDay() // 0
date.getTime() // タイムスタンプ値2次元配列の加工
let values = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]の場合
// 各2列目を配列化 -> [2,5,8]
values.map(function(value, index){return value[1];});
// 2列目に5を含むValue行を取得 -> [4,5,6]
values.filter(function(value, index){return value[1]==5;});
let values = [
[1,2,3,4,5],
[6,7, ,9,6],
[3,2,6,9,8]
]
// 列2と列4で配列を作りたい -> [[2,4], [7,9], [2,9]]
var x = values.map(function(value){
return [value[1], value[3]];});
}
// クリア
■セルのクリア
const ss = SperadsheetApp.getActiveSpreadsheet();
const sh = ss.getActiveSheet();
// クリア
sh.getRange(1,1).clear()
// 値のみクリア
sh.getRange(2,1).clear({contentsOnly: true});
// フォーマットのみクリア
sh.getRange(4,1).clear({formatOnly: true});
■値や数式のみクリア
const rng = sh.getRange('A1:C3');
rng.clearContent();
■シート全体のクリア
sh.clear()リテラル表現
const TENKI = '晴れ';
console.log( `今日のて天気は${TENKI}です`);
const message = ui.alert('あああ\nいいい\nううう');
or
const message = `
あああ
いいい
ううう
`;クリア時にMSGを付与
function main(){
// 削除MSG(Noなら強制終了)
if(clearAlert() == false){return;}
clearRangeContent("シート1", "A5", "B3:C3", "D2");
}
// セル範囲のコンテンツをクリア(引数:シート名、セル範囲(ex."A1", "A2:B4"、複数記載OK))
function clearRangeContent(sheetName, target1, target2, target3){
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sh = ss.getSheetByName(sheetName);
console.log(arguments.length);
for(let i = 1; i < arguments.length; i++){
let targetRange = arguments[i];
console.log(targetRange);
sh.getRange(targetRange).clearContent();
}
}
// 削除MSG、YES_NOアラート
function clearAlert(){
const ui = SpreadsheetApp.getUi();
const response = ui.alert(
'確認',`削除します。よろしいですか?`,
ui.ButtonSet.YES_NO
);
switch(response){
case ui.Button.YES:
return true;
case ui.Button.NO:
return false;
};
}○○
○○
○○