GASのお勉強！~カスタムメニュー作成、図形タップアクション、メール作成etc~

#はじめに
ちょっとあってお勉強中です。
自分の中で基本的なことがまとまったので記事にしてみました！
色々できるようになるには小さなことからコツコツと！:hatching_chick:

なんとなく理解された方、下の方に必要だろうリンク置いてあります！ドキュメントにすぐ飛べるようのやつです。:shamrock::seedling::deciduous_tree:

参考URLは被ったりしています！
参考URLは必要なところに記述しています！


#:hatched_chick:普通のカスタムメニューの作成

参考:https://developers.google.com/apps-script/guides/menus
参考:https://developers.google.com/apps-script/reference/base/menu

<img width="977" alt="スクリーンショット 2019-12-01 22.53.21.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133940/169e1fa4-20a5-4843-af6a-5c0cfcf2ffc6.png">


```sample.gs
function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('メニュー')
      .addItem('アイテム', 'menuItem1')
      .addToUi();
}

function menuItem1() {
  SpreadsheetApp.getUi()
     .alert('テキスト');
}
```

:sun_with_face:onOpen…開いた時に実行される関数
:sunny:addItem(caption, functionName)->Menu…メニューにアイテムを追加
:sunny:addToUi()…メニューをおく
:airplane:menuItem1…アラート表示


#:hatched_chick:図形タップアクション

参考：https://developers.google.com/apps-script/guides/menus

![sample1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133940/b2325bb6-7235-47f0-82b2-85e9fb1b2c4e.gif)

・タップしたい時の関数を作成

```sample.gs
function showMessageBox1() {
  Browser.msgBox('You clicked it!');
}
```

・スプレッドシートに図形を配置
・図形右クリックタップで図形の上の方になんかでるのでそれをタップ。
<img width="272" alt="スクリーンショット 2019-12-01 23.36.31.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133940/fbaeb5e3-425b-c5e6-9966-41a7df2abea4.png">
・[スクリプト割り当て]タップで出てきたとこに『showMessageBox1』と入力して保存
・図形タップで処理が実行される


#:hatched_chick:関数使用(自作)

参考：https://developers.google.com/apps-script/guides/sheets/functions

・使用したい関数の作成

```sample.gs
function DOUBLE(input) {
  return input * 2;
}
```

・使用するセルに
=DOUBLE(A7)
ように記入、クリック！　A7のデータ変えると自動的に変わる！
<img width="768" alt="スクリーンショット 2019-12-02 0.05.20.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133940/ee3ae122-67a8-4490-9b29-4e307f66e06d.png">

ちなみに、他の方が作った関数なども使用できます。
・アドオン→アドオン取得　でストアへ
・お気に入りをインストール
・インストールすると先ほどのところに項目追加されるので使っていく。
<img width="911" alt="スクリーンショット 2019-12-02 0.20.44.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133940/1991a292-9ad2-aed2-a9db-3983e400ee0c.png">

#:hatched_chick:翻訳(日本語→英語)

参考：https://developers.google.com/apps-script/reference/language/
キーワード：Apps Scriptサービス

```sample.gs
function LANGUAGECHANGE(text){
  var english = LanguageApp.translate(text, 'ja', 'en');
  return english;
}
```

<img width="317" alt="スクリーンショット 2019-12-02 0.54.51.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133940/25930a9a-adea-f555-e5d6-4e1a2811b4bb.png">


#:hatched_chick:通常のリクエストのレスポンスをテキストで変換
参考URL:https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app

```sample.gs
function URLTEXTGET(text){
  var response = UrlFetchApp.fetch(text);
  return response.getContentText();
}
```
<img width="825" alt="スクリーンショット 2019-12-02 1.16.11.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133940/1df6e007-719d-a0b6-1ab5-2a4f4a6a3f8b.png">

※返されるテキスト多すぎるとエラーになります

#:hatched_chick:メール送信(普通)
スクリプト実行や図形押した時に実行などで使用してみました！

参考:https://developers.google.com/apps-script/reference/gmail/gmail-app#sendEmail(String,String,String)

```sample.gs
function SENDMAIL(){
  GmailApp.sendEmail("*********@gmail.com", "ここにタイトル", "ここに本文");
}
```
<img width="390" alt="スクリーンショット 2019-12-02 1.38.01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133940/f032dd56-30cb-2e82-2a00-ec89bc036027.png">

#:hatched_chick:HTMLのメール送信

参考:https://developers.google.com/apps-script/reference/gmail/gmail-app#advanced-parameters_1

っと言ってもオプションとして指定してあげればいいみたいです！

```sample.gs
function SENDMAIL(){
  GmailApp.sendEmail("*****@gmail.com", "ここにタイトル", "ここに本文", {htmlBody:"<h1>こんにちは</h1><p>今日も張り切って行こう！</p>"});
}
```
<img width="455" alt="スクリーンショット 2019-12-02 1.52.02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133940/36ff7028-8b32-4062-72f4-1c25305ddf67.png">

#:hatched_chick:CSVのインポート
参考:https://support.google.com/docs/answer/3093335

```
=IMPORTDATA("http://www.census.gov/2010census/csv/pop_change.csv")
```

<img width="300" alt="スクリーンショット 2019-12-04 4.12.33.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133940/055e4931-3f36-ca9b-e938-d23ab69b6efa.png">



#:hatched_chick::hatched_chick:そのほかメモ
・[用意されている関数](https://support.google.com/docs/table/25273)

```
var sheet = SpreadsheetApp.getActiveSheet();
var d1 = sheet.getRange('D1');
d1.setFormula('=SUM(B1, C1)');
```

GASで使うときはこのように使うみたいです。
参考:https://qiita.com/nyantera/items/fdf1170a964ffaac0dc8



・[Appsスクリプトサービス](https://developers.google.com/apps-script/reference)
<img width="100" alt="スクリーンショット 2019-12-02 0.59.52.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133940/ec709347-5700-7626-26d0-c79d02df85ef.png">
・[スプレッドシートの範囲アクセス](https://developers.google.com/apps-script/reference/spreadsheet/range#detailed-documentation)
・[このアプリは確認されていませんのエラー対策](https://www.kagua.biz/tool/jisaku/gas-authentication-not-pass.html)
・[ハンズオン的なものはここら辺から](https://developers.google.com/apps-script/guides/menus)

#:hatched_chick::hatched_chick::hatched_chick:さいごに
基本的なことがなんとなくわかったので一安心です！:older_man_tone1: