To Doを管理する時にグーグルサイトのリストを使って管理しています。
このリストは非常に便利なのですが、金額を合計できなかったり、特定の項目の数の合計をカウントしたりが出来ません。
そこで、グーグルのスプレッドシートにリストのデータをインポートさせて、リストの作成はグーグルサイト、編集したり、自分の好みに変更したりはスプレッドシートで管理する方法を試行錯誤してようやく完成しました。
ざっくりと手順は下記二点です。
備忘記録として残しておきます。
まずはグーグルサイトでリストを作成する
これはグーグル先生に聞けば腐るほど情報が出てくるので割愛しますが、テストで作成したサイトが下記になります。
https://sites.google.com/site/todolistofclt/list
次にスプレッドシートを作成してエディタにスクリプトを記載する。
これもやり方は割愛します。
スクリプトは下記の通り
——————————————————————————-
function onOpen(){
var mySpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var myMenuEntries = [];
myMenuEntries.push({name: “Update”, functionName: “getPageItem”});
mySpreadsheet.addMenu(“Action”, myMenuEntries);
}
function getPageItem(){
var sheet = SpreadsheetApp.getActiveSheet();
var site = SitesApp.getSiteByUrl(“https://sites.google.com/site/todolistofclt/list”);
var page = site.getChildByName(“list”)
var cols = page.getColumns();
var items = page.getListItems();
var last = sheet.getLastRow();
try{
var sheet = SpreadsheetApp.getActiveSheet();
sheet.clearContents();
}catch(e){
Browser.msgBox(e);
}
for(var i = 0;i < cols.length;i++){
Logger.log(cols[i].getName());
sheet.getRange(1, i + 1).setValue(cols[i].getName());
for (var j = 0;j < items.length;j++){
Logger.log(items[j].getValueByIndex(i));
sheet.getRange(j + 2, i + 1).setValue(items[j].getValueByIndex(i));
}
}
}
——————————————————————————-
作成したスプレッドシートがこれ
https://docs.google.com/spreadsheets/d/1DeW-PbFet-upR2KxonKKLRmdDh9S1-nsR9TZgcwHi2Y/edit#gid=0
このままスクリプトを実行してもリストで作成したItemを取り込んでくれません。
そこでTasks APIを有効にして実行します。
….と思ってたのですが、特に有効にしなくてもItemの取り込みが実行されました。
まぁ、もし出来ない、もっと詳細を知りたい方はお問い合わせください。
弥生のデータをエクスポートして貼り付けるだけで英語版の決算書を作成するシートを作りました。
弥生の決算書作成からCSVデータをエクスポートする。
↓
このシートの決算書(貼付)のデータを一度すべてdeleteし、上記データを貼り付ける。
↓
上の(GAS)より英文レポート作成をクリックする。
↓
(google)と書かれたタブの書式を手作業で整える(行を挿入したり・・・など)。
↓
(google)は印刷するとき翻訳言語が表示されるので印刷用に出力するために、GASの印刷用データ作成をクリックする。
↓
終了
スプレッドシートを使っていて、こんな時はどういった数式が使えるのか?ということをよく思います。
そのたびに調べたりしていて、結局以前調べた繰り返しになることもよくあります。
(あまり使わない数式はすぐ忘れてしまいます。)
ということで、備忘録として記録しておこうと思います。
行数を指定してセルのアルファベットを表示
=SUBSTITUTE(ADDRESS(1,L1,4),1,)
L1に入力されている番号の列に対応する(アルファベット)を表示
(アルファベットを表示させて何をやりたいかというと、GASで代入するアルファベットを取得したいからです。)
日付の書式を設定したい
例:2014/6/30と入力したら2014年06月と表示させ下にドロップすると2014年07月と月単位で変更
(しかも入力値は月の末日)
A4には2014/6/30と入力
A5=EOMONTH(A4,1)
B5=text(A5,”yyyy年mm月”)
縦と横を入れ替える
=TRANSPOSE(‘test’!C1:PC6)
入れ替えたいセルを指定
他のスプレッドシートを参照する
=ImportRange(“スプレッドシートkey”,”test!I4:I100″)