- 追加された行はこの色です。
- 削除された行はこの色です。
#topicpath
----
#contents
整理中。
SpreadSheetを走査して、データを取得する
**SpreadSheetを走査して、データを取得する [#i85a03a5]
#ref(05.png)
こんなデータを用意しました。このSpreadSheetに紐付いたエディタで定義した関数は以下の通り:
function getAllRecords(){
var mySheet = SpreadsheetApp.getActiveSheet(); // アクティブなシート
// var mySheet = SpreadsheetApp.getActive().getSheetByName('シート2'); // シート名指定
var arrData = mySheet.getDataRange().getValues();
for(var i=0; i< arrData.length; i++){
Logger.log(arrData[i]);
}
}
こんな感じでセルのデータにアクセスができます。実行しようとすると、OAuth2の認可画面が出ますが、そのシートへのデータアクセスを許可すれば、下記の実行結果が得られます。


[17-03-25 16:31:09:521 JST] [NO, 住所, 氏名, 年齢]
[17-03-25 16:31:09:522 JST] [1.0, 東京, 名前1, 20.0]
[17-03-25 16:31:09:522 JST] [2.0, 東京, 名前2, 21.0]
[17-03-25 16:31:09:523 JST] [3.0, 東京, 名前3, 22.0]
[17-03-25 16:31:09:524 JST] [4.0, 東京, 名前4, 23.0]
[17-03-25 16:31:09:524 JST] [5.0, 東京, 名前5, 24.0]
[17-03-25 16:31:09:525 JST] [6.0, 東京, 名前6, 25.0]
[17-03-25 16:31:09:525 JST] [7.0, 東京, 名前7, 26.0]
[17-03-25 16:31:09:526 JST] [8.0, 東京, 名前8, 27.0]
[17-03-25 16:31:09:526 JST] [9.0, 東京, 名前9, 28.0]
[17-03-25 16:31:09:527 JST] [10.0, 東京, 名前10, 29.0]
[17-03-25 16:31:09:527 JST] [11.0, 東京, 名前11, 30.0]
[17-03-25 16:31:09:527 JST] [12.0, 東京, 名前12, 31.0]
[17-03-25 16:31:09:528 JST] [13.0, 東京, 名前13, 32.0]
-[[GASでSpreadsheetを操作する自分的ベストプラクティス - Qiita>http://qiita.com/ryan5500/items/e72eb205fbe006c2eb6f]]
getActive().
** SpreadSheetに入力された日付の取扱い。 [#qba0197b]
for(var i=0; i< arrData.length; i++){
var date = new Date(arrData[i][4]);
// Logger.log(date);
Logger.log(Utilities.formatDate( date, 'Asia/Tokyo', 'yyyy/MM/dd HH:mm:ss'));
} ↑フォーマットされた文字列を返す
ついでに、つぎの日とかの取得方法。
Logger.log(Utilities.formatDate( date, 'Asia/Tokyo', 'yyyy/MM/dd HH:mm:ss'));
date.setDate(date.getDate() + 1); ←日付+1
Logger.log(Utilities.formatDate( date, 'Asia/Tokyo', 'yyyy/MM/dd HH:mm:ss'));
**SpreadSheetへのレコード追加。 [#kda2aa86]
var mySheet = SpreadsheetApp.getActiveSheet(); // アクティブなシート
var record = [
'data1',
'data2',
'data3',
'data4',
];
mySheet.appendRow(record);
このように列ごとのデータを配列で渡せばOK。
**doPost(e)のパラメタへのアクセス [#ac7aa103]
例: e.parameter.param1 で、
curl -X POST https://script.google.com/[WEBアプリURL] --data-urlencode 'param1=value1'
で言うところの 'value1' が取得できる。
**以下、整理中。 [#mc3d076a]
SlackのOutgoing WebHooksを使って、処理を起動する
処理結果を Slackへ通知する
これらを使って、SlackのBotをつくる
RESTを叩いてデータをとりにいく
Gmail送信する
環境変数を設定する
Slackのライブラリで チャンネルIDを指定
//slackApp インスタンスの取得
var slackApp = SlackApp.create(token);
// var channelId = e.parameter.channel_id; ←SlackからのPOSTデータから取得
var channelId = slackApp.channelsList().channels[0].id; ← #generalを指定
***関連リンク [#q2aed177]
チャンネルのIDを確認
var cList = slackApp.channelsList().channels;
for(var i=0;i<cList.length ; i++){
message += "[ "+cList[i].id +" ]";
message += "[ "+cList[i].name +" ]";
}
-[[Library Documentation>http://bit.ly/2nHeWXo]]
データを返す
var result = {なんかObject};
return ContentService.createTextOutput(JSON.stringify(result))
.setMimeType(ContentService.MimeType.JSON);
これで、JSON文字列をContentType = JSONで返却することができそうです。
ただしGASはセキュリティ上(?)コンテンツを返すのではなく302を返して、そこにリダイレクトすることで、上記JSONを取得するようです。
-[[Class ContentService | Apps Script | Google Developers>https://developers.google.com/apps-script/reference/content/content-service]]
**関連リンク [#q2aed177]
-[[Google AppsとOffice365を使いこなすためのGoogle Apps Script・Office API最強ツール|CodeIQ MAGAZINE>https://codeiq.jp/magazine/2016/11/46750/]]
----
この記事は
#vote(おもしろかった,そうでもない)
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}