データを入力するためのフォームを持つ他の誰かのためにスプレッドシートを設定しています。列の1つは日付を保持することになっています。入力日付の形式は次の例のようになります:「2013年1月26日」(データの収集には多くのコピーアンドペーストが必要になるため、入力ステップで形式を変更することは実際のオプションではありません)。
この日付列を並べ替え可能にする必要がありますが、スプレッドシートはこれを日付としてではなく、単に文字列として認識します。(「2013年1月26日」を認識しますので、試してみました。)入力日を再フォーマットする必要があります。
私の質問は:どうすればこれを行うことができますか?私は周りを見回しましたが、Google Apps Scriptは進むべき道のように見えます(ただし、再フォーマットの良い例はまだ見つかりませんでした)。残念ながら、私の唯一のプログラミング経験はPythonであり、中級レベルです。Pythonで問題なく実行できましたが、JavaScriptはわかりません。(私のPythonアプローチは次のようになります:
splitted = date.split()
newdate = "-".join([splitted[0], splitted[1][:-1], splitted[2]])
return newdate
)。
また、スクリプトをスプレッドシートにリンクする方法もわかりません。セル、フォーム、または場所にスクリプトを添付しますか?そしてどうやって?この点に関する有用で理解しやすいチュートリアルなどへのリンクは大いに役立ちます。
どんな助けでも大歓迎です!
編集:これが私が最終的に得たコードです:
//Function to filter unwanted " chars from date entries
function reformatDate() {
var sheet = SpreadsheetApp.getActiveSheet();
var startrow = 2;
var firstcolumn = 6;
var columnspan = 1;
var lastrow = sheet.getLastRow();
var dates = sheet.getRange(startrow, firstcolumn, lastrow, columnspan).getValues();
newdates = []
for(var i in dates){
var mydate = dates[i][0];
try
{
var newdate = mydate.replace(/"/g,'');
}
catch(err)
{
var newdate = mydate
}
newdates.push([newdate]);
}
sheet.getRange(startrow, firstcolumn, lastrow, columnspan).setValues(newdates)
}
私のような他の混乱したgoogle-script初心者の場合:
スクリプトをスプレッドシートに添付すると、スプレッドシート内からスクリプトを作成できます([ツール] => [スクリプトエディター])。そこに関数を入れるだけで十分で、関数呼び出しなどは必要ないようです。
スクリプトエディタからスクリプトのトリガーを選択します([リソース] => [このプロジェクトのトリガー])。
重要:スクリプトは、問題のシートの下部に空の行がある場合にのみ機能します。