Skip to content

Instantly share code, notes, and snippets.

@naosim
naosim / ChatWorkClient.js
Created May 11, 2021 20:17
GAS用チャットワーククライアント
/**
* 内部でUrlFetchAppを使っています
*/
class ChatWorkClient {
constructor(token) {
this.token = token;
this.baseUrl = 'https://api.chatwork.com/v2';
this.header = { 'X-ChatWorkToken' : token };
}
postMessage(roomId, message) {
@naosim
naosim / ApiEndPointAnalyzer.java
Last active February 20, 2021 23:48
Springフレームワークのエンドポイントを取得する 開発ドキュメント作成用ツール
import org.assertj.core.api.exception.RuntimeIOException;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider;
import org.springframework.core.type.filter.RegexPatternTypeFilter;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.Method;
@naosim
naosim / deno-reversi-logic.ts
Last active August 4, 2020 23:23
deno-reversi-logic.ts
import * as board2d from 'https://raw.githubusercontent.com/naosim/deno-board2d/v1.2.0/src/mod.ts';
export {
Board,
BoardMutable,
Pos,
Direction,
X,
Y
} from 'https://raw.githubusercontent.com/naosim/deno-board2d/v1.2.0/src/mod.ts';
@naosim
naosim / othello1d_a.html
Last active May 1, 2020 21:20
1次元オセロのお題
<!DOCTYPE html>
<meta charset="utf-8" />
<script>
/**
* 1次元オセロの盤面に白の石を置く
*
* - 盤は配列で表現する
* - 白の石は'白'
* - 黒の石は'黒'
* - 空の場所はnull
@naosim
naosim / index.html
Created February 29, 2020 23:53
20200301 frappe-ganttつかってみた
<!DOCTYPE html>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/frappe-gantt/0.3.0/frappe-gantt.min.css"></link>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/snap.svg/0.5.1/snap.svg-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/frappe-gantt/0.3.0/frappe-gantt.min.js"></script>
<svg id="gantt"></svg>
<script>
@naosim
naosim / toEntities.js
Created November 25, 2019 12:26
スプレッドシートの2次元配列をエンティティの配列に変換する
/**
* スプレッドシートの2次元配列をエンティティの配列に変換する
* - 2次元配列は0番目はヘッダー(カラム名の配列)行、1番目以降にデータが並んでいること
* - ヘッダー行のカラム名は空でないこと
* - カラム名は値の最初の行だけ採用される 例: "身長\n[cm]" → カラム名は"身長"になる
* @param {[['name', 'age'], ['mike', 30]]} ary2d - スプレッドシートのような2次元配列
* @return 例: [{name:"mike", age:30}, {name:"jiro", age:40}]
*/
function toEntities(ary2d) {
var headers = ary2d[0]
@naosim
naosim / comDate.js
Created November 23, 2019 07:03
予算管理で必要な日付への変換をする。スプレッドシートから呼び出すカスタム関数用
function comDate(dates, typesCsv) {
var convert = function(d, type) {
if(type == '年月') {
return d.getYear() + ('0' + (d.getMonth() + 1)).slice(-2);
}
var nendo = 'FY' + (d.getMonth() + 1 < 4 ? d.getYear() - 1: d.getYear());
if(type == '年度') {
return nendo;
}
if(type == '半期') {
@naosim
naosim / SeachMail.js
Created September 15, 2019 21:58
gmailを検索する
/**
* メールを検索する
* 注意: 内部でGmailApp.searchを利用しているため、検索結果は多めに取れる。厳密にするには戻り値に対してもう一度フィルターをかける必要がある。
*
* @param {string} searchText
* @param {object} option 省略可
* @return {GmailMessage[]} 日付の昇順でソート済み
*/
function searchMail(searchText, option) {
// optionの初期値セットアップ
@naosim
naosim / SheetDb.js
Last active July 17, 2019 01:26
【GAS】シートをDBのように扱う。オブジェクト版
function SheetDb(spreadSheet) {
/**
* レコードの全取得
*/
function findAll(name /* シート名 */) {
var sheet = spreadSheet.getSheetByName(name);
var table = sheet.getDataRange().getValues()
return JSON.parse(JSON.stringify(table));
}
@naosim
naosim / GithubApi.js
Created July 16, 2019 22:46
【GAS】GithubApiライブラリ
function GithubApi(
accessToken,
owner,
repo
) {
var requestOptions = {
headers: { Authorization: 'token ' + accessToken }
}
function exec(url) {