真・googleカレンダーとスプレッドシートを連携させる
すったもんだのあげくようやく表題ができるようになりました。
参考にしたものは以下。
Google Apps Script = GoogleDocs版javascript
Google Apps Scriptガイド
http://code.google.com/intl/ja/googleapps/appsscript/guide.html
Google Apps ScriptでスプレッドシートからGoogleドキュメント以外のサービスにアクセスする
http://codezine.jp/article/detail/5064
〜一通り作ってみての追記〜
スクリプト自体は簡単にできるんだけど、処理にコストがかかるとgoogleサーバにタイムアウトで蹴られてしまいます。
今回書いたスクリプトでは、スプレッドシートオブジェクト(ライブオブジェクトではないけど異様に重い)の配列切り出しと書き込み処理をチューニングすることで対処しました。
取得部分でスプレッドシートオブジェクトから必要な値だけを配列に切りだす。
var doc = SpreadsheetApp.getActiveSpreadsheet(); var sheet = doc.getSheetByName(sheetName); var cellValues = sheet.getRange(targetRange).getValues();
書き込みは1行1行書き出してると目視できるくらいもっさりした処理になります(スローモーションを見ているようでワロタ^^;)
二元配列を生成して一回で終わらせるとスマート。
for(var i=0 ; i<cellValues.length ; i++){ var tmpvalue = new Array(1); tmpvalue[0] = cellValues[i]; values[i] = tmpvalue; } var doc = SpreadsheetApp.getActiveSpreadsheet(); var sheet = doc.getSheetByName(sheetName); var all = sheet.getRange(targetrange); all.setValues(values);