概要
GASの良く使うパーツを書き溜めています。
個人用ですが参考になれば幸いです。
const すべき所まで let で宣言しているのは多めに見てください・・・
スクリプト
ブック(スプレッドシート)を取得
// 現在のブックを取得
let ss = SpreadsheetApp.getActiveSpreadsheet();
// IDを指定してブックを取得
// https://docs.google.com/spreadsheets/d/XXXXXXXXXXXXXXXXXXXX/edit#gid=0
let ss = SpreadsheetApp.openById('XXXXXXXXXXXXXXXXXXXX');
ブック内のシートを取得
// 現在のシートを取得 1
let ss = SpreadsheetApp.getActiveSpreadsheet();
let sheet = ss.getActiveSheet();
// 現在のシートを取得 2
let sheet = SpreadsheetApp.getActiveSheet();
// シート名を指定して取得
let ss = SpreadsheetApp.getActiveSpreadsheet();
let sheet = ss.getSheetByName('hoge');
シートに書き込み
// 1つのセルに書き込み
let sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange( 1, 1 ).setValue('hoge');
// 並んだセルに同時に書き込み
let sheet = SpreadsheetApp.getActiveSheet();
let obj = [
['a','b','c','d'],
['e','f','g','h']
];
sheet.getRange( 1, 1, 2, 4 ).setValues(obj);
シート名を指定して 取得 OR 新規作成
/**
* 今日の日付のシート名を指定してセルに文字を書き込む
*/
function myFunction(){
let date = new Date();
let year = date.getFullYear();
let month = date.getMonth() + 1;
let day = date.getDate();
let name = year + '-' + month + '-' + day;
let sheet = createSheet(name);
// シートに書き込み
sheet.getRange(1,1).setValue('hoge');
}
/**
* 指定された名前のシートが存在すれば返却
* 無ければ新規作成
*/
function createSheet(name){
let ss = SpreadsheetApp.getActiveSpreadsheet();
let sheet = ss.getSheetByName(name);
if(sheet){
// シートが見つかればそのまま返却
return sheet;
} else {
// シートが無ければ原本から複製して返却
// 原本を取得
let originSheet = ss.getSheetByName('原本');
originSheet.showSheet();
originSheet.activate();
// 複製
ss.duplicateActiveSheet().setName(name);
let newSheet = ss.getSheetByName(name);
// 原本を隠す
originSheet.hideSheet();
return newSheet;
}
}
ポップアップ系
let confirmation = Browser.msgBox('タイトル', '本文', Browser.Buttons.OK_CANCEL);
if(confirmation == 'cancel') {
Browser.msgBox('キャンセルを押しました');
} else {
Browser.msgBox('OKを押しました');
}
シートにメニューを追加
/**
* シートにメニューを追加
*/
function onOpen(){
//メニュー配列
let myMenu=[
{name: '関数1', functionName: 'myFunction1'},
{name: '関数2', functionName: 'myFunction2'}
];
SpreadsheetApp.getActiveSpreadsheet().addMenu('スクリプト',myMenu);
}
function myFunction1(){
Browser.msgBox('関数1 を実行しました。');
}
function myFunction2(){
Browser.msgBox('関数2 を実行しました。');
}
日付関係( GAS というよりは js )
function myFunction(){
let date = new Date();
let a = getYmd(date); // 2020-1-1
let b = getYmdJp(date); // 2020年1月1日(水)
let c = getTimeStamp(); // 2020-1-1 3:3:3
}
/**
* ex. 2020-1-1
*/
function getYmd(date){
if(date==''){return '';}
let year = date.getFullYear();
let month = date.getMonth() + 1;
let day = date.getDate();
return year + '-' + month + '-' + day;
}
/**
* ex. 2020年1月1日(水)
*/
function getYmdJp(date){
if(date==''){return '';}
let year = date.getFullYear();
let month = date.getMonth() + 1;
let day = date.getDate();
let dayOfWeekStr = [ "日", "月", "火", "水", "木", "金", "土" ][date.getDay()] ;
return year + '年' + month + '月' + day + '日(' + dayOfWeekStr + ')';
}
/**
* ex. 2020-1-1 3:3:3
*/
function getTimeStamp(){
let date = new Date();
let year = date.getFullYear();
let month = date.getMonth() + 1;
let day = date.getDate();
let hour = date.getHours();
let minute = date.getMinutes();
let second = date.getSeconds();
return year+'-'+month+'-'+day+' '+hour+':'+minute+':'+second;
}
メール送信
let to = 'hoge@example.com';
let subject = 'テストメール';
let body = 'テストメールです。';
let options = {
name: 'hoge事務局',
cc: 'hoge2@example.com',
bcc: 'hoge3@example.com'
};
GmailApp.sendEmail(to , subject, body, options);
CURL
function curl() {
let url = "https://example.com";
let headers = {
Accept: "application/json",
"Content-type": "application/json"
};
let data = {
a: 1,
b: 2
};
let options = {
method: "post",
payload: JSON.stringify(data),
headers: headers
};
UrlFetchApp.fetch(url, options);
}
HTTP エンドポイント
function doGet(e) {
let html = '<p>htmlです</p>';
return HtmlService.createHtmlOutput(html);
}
GETリクエストをリダイレクト
(実態は js ですが・・・)
function doGet(e) {
let url = 'https://exapmle.com';
html = '<script>window.top.location.href="' + url + '";</script>'
return HtmlService.createHtmlOutput(html);
}
for(v8ランタイム対応)
let list = {color:'red', name:'apple'};
for (let idx in list) {
let a = list[idx];
}
let list = [500,800,200];
let len = list.length;
for (let i=0; i<len; i++) {
let a = list[i];
}