FLINTERS Engineer's Blog

FLINTERSのエンジニアによる技術ブログ

GoogleのGASとDriveが楽しい

どうも、西山です。

最近は業務でTableauがメインになっていてScalaなどは一切やっていないのですが、
趣味でやってるGoogleの活用でも報告します。

GoogleDriveを活用して無料でhtmlを置く

自分がお世話になってるコミュニティで教えてもらったんだけど、
簡易で無料に設置できるって事で活用させてもらっています。
JS+CSS+HTMLの設置もOK

PHPが動くとあるけど、さすがによくわからず試せなかった。
※Editey側のサーバで実行して表示?とかになるのかね。

ドメインを変更できるとあるのだけど、これもまだ試していないです。

参考サイト

www.editey.com

pineplanter.moo.jp

GoogleActionScript スプレットシートの活用 API

スプレットシートはよく共有の為に大変お世話になってて
簡単なScriptなどを記述して遊んだりしてました。
ソシャゲのデータをまとめて共有したり活用事例は多いのですが
これをそのままAPI化して活用できる事を今頃知って遊ばせて貰ってます。
doGetとdoPostでREST経由での処理が可能になります。
また上にあるEDITEYと連携して、データベースとして活用する事が
可能です。

参考サイト

http://qiita.com/soundTricker/items/1bcfc5c9e80d29a7ae4b

活用事例 BOT作り

簡易な場合は、customize/slackbotで遊ぶ事が多いでしょうが
APIと連動する事で学習させたりするBOTを作成したので
やっつけですが貼っておきます。

/**
 * シート関係の処理をまとめる
 **/
var botSeetAPI = function botSeetAPI() {
    var sheet = SpreadsheetApp
        .openById("[シートID]")
        .getSheetByName("セリフ")

    var setVoice = function setVoice(word) {
        var data = [word]
        sheet.appendRow(data)
        return data
    }

    var setWordVoice = function setWordVoice(word) {
        return setVoice(getWordVoice(word))
    }

    var isAddVoice = function isAddVoice(word, _keyword) {
        var keyword = _keyword ? _keyword : "覚えろ"
        return word.indexOf(keyword + "「") != -1 && word.indexOf("」") != -1
    }

    var getWordVoice = function getWordVoice(word, _keyword) {
        var keyword = _keyword ? _keyword : "覚えろ"
        return word.indexOf(keyword + "「") != -1 ?
            word.substring(keyword.length + 1, word.indexOf("」")) : null
    }

    var randomVoice = function randomVoice() {
        return sheet.getRange(Math.floor(Math.random() * sheet.getLastRow()), 1).getValue()
    }


    return {
        setWordVoice: setWordVoice,
        isAddVoice: isAddVoice,
        getWordVoice: getWordVoice,
        randomVoice: randomVoice
    }
}()

function doPost(e) {
    var token = "-"
    var bot_name = "BOT名"
    var bot_icon = "-"
    var verify_token = "-"

    //投稿の認証
    if (verify_token != e.parameter.token) {
        throw new Error("invalid token.")
    }

    var slack = SlackApp.create(token)
    var word = e.parameter.text.substring(4)
    var message = ""
    if (botSeetAPI.isAddVoice(word)) {
        var voice = botSeetAPI.setWordVoice(word)
        message = e.parameter.user_name + "さんは「" + voice + "」を教えた。"
    } else if (e.parameter.text.length === 3) {
        message = botSeetAPI.randomVoice()
    }

    return slack.postMessage(e.parameter.channel_id, message, {
        username: bot_name,
        icon_url: bot_icon
    });
}

参考URL

http://tech.camph.net/slack-bot-with-gas/

お世話になってるコミュニティの紹介

frontend-temple.connpass.com