Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

GAS(Google Apps Script)チートシート

概要

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];
}
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away