GAS / Google apps script まとめ

    >




ローカルストレージ使えない

ローカルストレージは使えないみたいですね。JavaScriptとは違うってことですね。

正規表現検索はできない

// こういうことはできない
var myThreads = GmailApp.search( /subject:(ke.pa)/, 0, 3);

ちなみに取得したオブジェクトに対しての正規表現検索/置換はJS同様可能なので安心して欲しい。.match(//)[0]みたいにして取得できる。

replできない

repl(対話型実行)はできないみたい。
pryみたいな。

ログと確認

Logger.log("hoge")

Ctrl + Enter

式展開はできない

var strTerms = "Google" ;  // => ok

var strTerms = `Google` ; // => No // 式展開可能な``は使用できない

オブジェクトの中身をみる

Logger.log(JSON.stringify(obj))

ユーザーのメールアドレスを取得

Session.getActiveUser().getEmail() // e.g. yuis.ubuntu@gmail.com

特定のセルを削除

logsheet.getRange("a1").clearContent();

シートの全セルを削除

logsheet.clear() ;

// 蛇足: Logger.log(logsheet.getRange("*")) ; => エラー

メールを送信


function sendEmail(){ MailApp.sendEmail('yuis.twitter@gmail.com' , 'title' , 'content.' ); }

処理したいspread sheetのIDを取得。

var id = SpreadsheetApp.getActiveSpreadsheet().getId();
var spreadSheet = SpreadsheetApp.openById(id);

指定のスプレッドシートの指定のシートにデータを追記していく

var id = "1YQrRF7BBwL6NAFGXJh???????????";  // 先程取得したスプレッドシートのIDを利用する
var spreadSheet = SpreadsheetApp.openById(id);  

spreadSheet.getSheetByName('log').appendRow( // logシートを予め作っておくこと。
    [new Date(), userEmail, 'helloStandAlone()' , 'ここは配列なので', '自由に追加!']
);

GASでGETリクエストを送る

UrlFetchApp.fetch("https://hoge.com")

ローカルIPアドレスにHTTPリクエストは送れない

Google Apps Script – Google apps script UrlFetchApp.fetchでBad requestエラー(139650)|teratail

GASはサーバーサイドで動いているので、クライアントサイドあるJavaScriptと違い、0.0.0.0のようなローカルIPアドレスにアクセスできません。

GASでPOSTリクエストを送る

line notifyの例

function sendLine(strSubject,strMessage){


  var options =
   {
     "method"  : "post",
     "payload" : "message=" + encodeURIComponent(strSubject) + "\n" + encodeURIComponent(strMessage) ,
     "headers" : {"Authorization" : "Bearer "+ strToken}

   };

   UrlFetchApp.fetch("https://notify-api.line.me/api/notify",options);
}

curl [addr] -X POST -d "key=value"とするところのフォームデータはpayloadに指定します。

また、JavaScript同様、POSTする前にはPOSTデータをエンコードして&などをエスケープしておくことが必要になります。: encodeURIComponent()

GASでできなかったこと 問題点

starでトグルするんじゃなくて、ラベル名称で判別すれば使いかっていいんじゃないかと思ってラベルに手を出してみたのですが、

myMessages[i][j].getThread().addLabel("hoge") ;
var labels = myMessages[i][j].getThread().getLabels() ;

Threadクラスで使えるはずのaddLabel、getLabelsが使用できませんでした…。

そんなメソッドないみたいに言われる。

どうしましょうね…。なので今はstarでやってますが。よく分からンゴ。



お困りですか?この記事で紹介していることをマンツーマンで指導、解説、代行します。まずはお気軽にお問い合わせください。


関連するかもしれない記事

GoogleAppsScript(GAS) / スパムフォルダにメール転送する
GoogleAppsScript(GAS) / 最新n日のメールに対して実行 (タイムスタンプ)
Google Apps Scriptのスクリプトを定期的に実行する方法
Google apps scriptを使ってGmailが来たらLINEで通知する


Close Menu