Contents
ローカルストレージ使えない
ローカルストレージは使えないみたいですね。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でやってますが。よく分からンゴ。