GAS
/**
テーブル内容から シートにデータの書き出し
@function testWrittoTOSheet
@params データベース名
@params テーブル名
@params シート名
*/
function escape (val) {
if (typeof(val)!="string") return val;
return val
.replace(/[\\]/g, '\\\\')
.replace(/[\/]/g, '\\/')
.replace(/[\b]/g, '\\b')
.replace(/[\f]/g, '\\f')
.replace(/[\n]/g, '\\n')
.replace(/[\r]/g, '\\r')
.replace(/[\t]/g, '\\t')
.replace(/[\"]/g, '\\"')
.replace(/\\'/g, "\\'");
}
JSDOCサンプル
/**
* Yahoo テキスト解析APIインターフェイスを作成します。<br>
* <p>
* Yahoo テキスト解析API(http://developer.yahoo.co.jp/webapi/jlp)を呼び出すためのインスタンスを作成します。
* </p>
* <h3>呼び出し例</h3>
* <pre>
* var yahooJaTextApi = YahooJaTextApi.create(apiKey);
* //このあと補完も一応効きます。
* </pre>
* @param {string} apiKey APIキー
* @return {YahooJaTextApi} YahooJaTextApiのインスタンス
*/
function create(apiKey) {
return new YahooJaTextApi(apiKey);
}
/**
* キーフレーズ抽出APIを呼び出します。<br>
* <p>
* キーフレーズ抽出API(http://developer.yahoo.co.jp/webapi/jlp/keyphrase/v1/extract.html)を呼び出します。
* </p>
* <h3>呼び出し例</h3>
* <pre>
* var yahooJaTextApi = YahooJaTextApi.create(apiKey);
* var keyphrases = yahooJaTextApi.keyphrase("東京ミッドタウンから国立新美術館まで歩いて5分で着きます。");
* Logger.log(keyphrases);
* </pre>
* @param {string} sentence 抽出を行う文字列
* @return {object} {"キーフレーズ" : "重要度"}
*
*/
function keyphrase(sentence) {
throw new Error("このメソッドは直接呼び出せません。createメソッドをコールし取得したインスタンスより呼び出してください。");
}
/**
* 形態素解析APIを呼び出します。<br>
* <p>
* 文字列を形態素解析します。
* </p>
* <h3>呼び出し例</h3>
* <pre>
* var yahooJaTextApi = YahooJaTextApi.create(apiKey);
* //デフォルト設定で呼び出し
* var result = yahooJaTextApi.parse('すもももももももものうち');
* Logger.log(result);
*
* //解析情報の指定と、出力する品詞を指定して呼び出し
* var filteredResult = yahooJaTextApi.parse('すもももももももものうち' , {results:["ma" , "uniq"] , filter:["9"] }); //名詞のみを抽出
* Logger.log(result);
* </pre>
* <p>
* <code>optValue</code>はAPIに対するオプションで以下のようになります。
* </p>
* <h3>optValue</h3>
* <table>
* <thead>
* <tr>
* <td>Name</td>
* <td>Type</td>
* <td>Description</td>
* </tr>
* </thead>
* <tbody>
* <tr>
* <td>results</td>
* <td>Array.string</td>
* <td>
*
* 返却する情報を設定します。maとuniqが利用できます。<br>
* 詳しくはYahoo Japan 形態素解析APIのドキュメント(http://developer.yahoo.co.jp/webapi/jlp/ma/v1/parse.html)を御覧ください。<br>
* 例: ["ma" , "uniq"]
* デフォルトは["ma"]となります。
* </td>
* </tr>
* <tr>
* <td>filter</td>
* <td>Array.string</td>
* <td>
* 解析結果として出力する品詞番号を配列で指定します。<br>
* 品詞番号はYahoo Japan 形態素解析APIのドキュメント(http://developer.yahoo.co.jp/webapi/jlp/ma/v1/parse.html)を御覧ください。<br>
* 例: ["1" , "2"]
* </td>
* </tr>
* </tbody>
* </table>
* <h3>返却値</h3>
* <pre>
* {
* __origin__ : {APIの返却結果XMLオブジェクト},
* __originalText__ : {APIの返却結果文字列},
* maResult : { //形態素解析の結果
* totalCount : {トータルの件数},
* filteredCount : {フィルター後の件数},
* wordList : [ //形態素リスト
* { // 形態素
* surface : {形態素の表記},
* reading : {形態素の読みがな},
* pos : {形態素の品詞},
* baseform : {形態素の基本形表記を返します。活用のない形態素の場合は省略},
* }
* ]
* },
* uniqResult : { //形態素解析の結果から同一形態素の出現数を求めたもの
* totalCount : {トータルの件数},
* filteredCount : {フィルター後の件数},
* wordList : [ //形態素リスト
* { // 形態素
* surface : {形態素の表記},
* reading : {形態素の読みがな},
* pos : {形態素の品詞},
* baseform : {形態素の基本形表記を返します。活用のない形態素の場合は省略},
* count : {形態素の出現数}
* }
* ]
* }
* }
*
* @param {string} sentence 形態素解析を行う文字列
* @param {object} optValue オプション
* @return {object} 解析結果
*
*
*/
function parse(sentence , optValue){
throw new Error("このメソッドは直接呼び出せません。createメソッドをコールし取得したインスタンスより呼び出してください。");
}
(function(global) {
var YahooJaTextApi;
YahooJaTextApi = (function() {
YahooJaTextApi.name = 'YahooJaTextApi';
function YahooJaTextApi(appid) {
this.appid = appid;
if (!(this.appid != null)) throw new Error("the appid is required");
}
YahooJaTextApi.prototype.keyphrase = function(sentence) {
var res;
res = this.sendRequest("http://jlp.yahooapis.jp/KeyphraseService/V1/extract", {
"sentence": sentence,
"output": "json"
});
return JSON.parse(res.getContentText());
};
YahooJaTextApi.prototype.parse = function(sentence, optValue) {
var maResultXml, parameter, res, result, uniqResultXml, word, xml, _ref, _ref1, _ref2, _ref3;
optValue = optValue != null ? optValue : {};
parameter = {
sentence: sentence,
results: optValue.results != null ? optValue.results.join(",") : "ma",
filter: optValue.filter != null ? optValue.filter.join("|") : null
};
res = this.sendRequest("http://jlp.yahooapis.jp/MAService/V1/parse", parameter);
xml = Xml.parse(res.getContentText());
result = {
__origin__: xml,
__originalText__: res.getContentText()
};
maResultXml = xml.ResultSet["ma_result"];
if ((maResultXml != null) && (((_ref = maResultXml["word_list"]) != null ? (_ref1 = _ref.word) != null ? _ref1.length : void 0 : void 0) != null) > 0) {
result.maResult = {
totalCount: maResultXml["total_count"].getText(),
filteredCount: maResultXml["filtered_count"].getText(),
wordList: (function() {
var _i, _len, _ref2, _ref3, _ref4, _ref5, _ref6, _results;
_ref2 = maResultXml["word_list"].word;
_results = [];
for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
word = _ref2[_i];
_results.push({
surface: (_ref3 = word.surface) != null ? _ref3.getText() : void 0,
reading: (_ref4 = word.reading) != null ? _ref4.getText() : void 0,
pos: (_ref5 = word.pos) != null ? _ref5.getText() : void 0,
baseform: (_ref6 = word.baseform) != null ? _ref6.getText() : void 0
});
}
return _results;
})()
};
}
uniqResultXml = xml.ResultSet["uniq_result"];
if ((uniqResultXml != null) && (((_ref2 = uniqResultXml["word_list"]) != null ? (_ref3 = _ref2.word) != null ? _ref3.length : void 0 : void 0) != null) > 0) {
result.uniqResult = {
totalCount: uniqResultXml["total_count"].getText(),
filteredCount: uniqResultXml["filtered_count"].getText(),
wordList: (function() {
var _i, _len, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9, _results;
_ref4 = uniqResultXml["word_list"].word;
_results = [];
for (_i = 0, _len = _ref4.length; _i < _len; _i++) {
word = _ref4[_i];
_results.push({
surface: (_ref5 = word.surface) != null ? _ref5.getText() : void 0,
reading: (_ref6 = word.reading) != null ? _ref6.getText() : void 0,
pos: (_ref7 = word.pos) != null ? _ref7.getText() : void 0,
baseform: (_ref8 = word.baseform) != null ? _ref8.getText() : void 0,
count: (_ref9 = word.count) != null ? _ref9.getText() : void 0
});
}
return _results;
})()
};
}
return result;
};
YahooJaTextApi.prototype.sendRequest = function(url, parameter) {
var option;
option = {
method: "post",
payload: this.buildParameter(parameter)
};
return UrlFetchApp.fetch(url, option);
};
YahooJaTextApi.prototype.buildParameter = function(parameter) {
var key, result, val;
return result = ("appid=" + this.appid) + "&" + ((function() {
var _results;
_results = [];
for (key in parameter) {
val = parameter[key];
_results.push(val != null ? "" + key + "=" + (encodeURI(val)) : "");
}
return _results;
})()).join("&");
};
return YahooJaTextApi;
})();
return global.YahooJaTextApi = YahooJaTextApi;
})(this);