7

Google Docs スプレッドシート内に独自の数式を書くのが好きです。しかし、私がやりたいことは、すでに存在する関数に非常に似ていることがよくあります。例として、日付 ​​(2010 年 8 月 31 日) をレキシカルな曜日 (火曜日) に変換する関数が見つかりませんでした。私は書きたい:

=LexWeekDay('31-Aug-2010')
'Tuesday'

明らかに、コア JavaScript を使用してこのすべてのロジックを記述できますが、日付を取得して曜日を表す数値に変換するという通常のスプレッドシート関数が既に存在します。WEEKDAY() [0 => Sunday, 1=> Monday, etc]

カスタム スクリプトから、スプレッドシートで既に定義されているこの関数 (または通常は任意の関数) にアクセスするにはどうすればよいですか?

4

2 に答える 2

1

カスタム appscript では、Google スプレッドシートの組み込み式を次のように使用できます。

=WEEKDAY()セル A1 で関数を使用するとします。

次に、カスタム appscript 関数で次のようなアクティブなスプレッドシートを取得します。

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("YOUR_SHEET_NAME");

ここで、次のように式を設定します。

sheet.getRange("A1").setValue("=WEEKDAY()");

また、0,1 などを Sunday,Monday に変換する場合は、次のように配列を定義します。

var days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];

そして、次を使用します。

var dayIndex = sheet.getRange("A1").getValue(); 
Logger.log(days[dayIndex]);

ログは、ctrl+enter を使用するか、スクリプト エディター自体で [表示] -> [ログ] に移動して表示できます。

于 2016-12-27T07:30:10.967 に答える
1

Google ヘルプで同じ質問をしましたが、解決策が得られませんでした。ユーザーAhabによると:

私はその必要性を理解しています。GASが利用可能になった非常に初期のGASヘルプフォーラム1で同じことを表明しましたが、GASチームからの反応はあまり有望ではありませんでした... :(本質的に、スプレッドシート関数を含むGASクラスが必要で、彼ら。

一般に、スプレッドシート関数は、ArrayFormula、FILTER、SORT、UNIQUE などの高レベル関数により、スクリプトを作成する必要なく、関数型プログラミング言語としてすでに事実上使用できることに注意してください。残念ながら、置換マクロなどを作成することはできません。これにより、(疑似マクロ形式で) 次のような式をすばやく再利用できます。

名前: INVERSE 説明: 列配列の反転 構文: #INVERSE( array ) 呼び出し: #INVERSE( #1 ) 実行: =ARRAYFORMULA(SORT( #1 ; ROW( #1 ); FALSE))

于 2011-01-05T19:51:52.243 に答える