#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の認可画面が出ますが、そのシートへのデータアクセスを許可すれば、下記の実行結果が得られます。
&#8232;
 [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;}


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS