--- lang:ja-jp ###### tags: `Program` `open` --- # GAS (Google App Script) まとめ [TOC] ふるーいjavascript+GAS専用関数からなる言語。 GASのscript editorがかなり使いにくい。 ## cell操作 まずは現在のsheetを取得する。 ```javascript= var ss = SpreadsheetApp.getActive(); var sheet = ss.getActiveSheet(); ``` 列やcellの取得はrangeによる複数取得・座標による単体取得があるので、適宜使い分ける。 値の取得、入力はcell(s)に対して`getValues()`や`setValue()`で行える。 ```javascript= var colNames = sheet.getRange("1:1").getValues()[0] var lastRow = sheet.getLastRow(); sheet.getRange(lastRow+1, setCol).setValue(Others); ``` ## SpreadsheetがWebhook受信 (POST通信) 関数は`doPost(e)`で固定。 受信内容は`e.postData.getDataAsString()`に`JSON.parse()`をかけることでObject形式で得られる。 ```javascript= function doPost(e) { // スプレッドシートオブジェクトを取得 var ss = SpreadsheetApp.getActive(); var sheet = ss.getActiveSheet(); var postData = JSON.parse(e.postData.getDataAsString()); var colNames = sheet.getRange("1:1").getValues()[0] var lastRow = sheet.getLastRow(); postData["postDate"] = new Date(); postData["notSolved"] = 0; var Others={} for (key of Object.keys(postData)){ var setCol=colNames.indexOf(key)+1; if (setCol==0) { Others[key]=postData[key]; continue; } sheet.getRange(lastRow+1, setCol).setValue(postData[key]); } if (Object.keys(Others).legnth>0) { var key = "Others"; var setCol=colNames.indexOf(key)+1; sheet.getRange(lastRow+1, setCol).setValue(Others); } } ``` ## SpreadsheetがWebhook送信 (GET通信) 関数は`doGet(e)`で固定。 あまり触ったことはない。 ```javascript= function doGet(e) { var output = ContentService.createTextOutput("fuga"); output.setMimeType(ContentService.MimeType.TEXT); return output; } ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up