Zoho Sheetでは、単純な計算から複雑な計算まで、標準で約400種類の関数を使用できますが、ユーザー独自のビジネスロジックに応じた関数が必要になる場合もあります。また、カスタム関数を使用して、その他のアプリケーションからZoho Sheetにデータを取り込むこともできます。
このページでは、Zoho SheetでDelugeを使用して独自のカスタム関数を作成し、使用する方法を説明します。
カスタム関数の作成
カスタム関数を作成するには、次の手順を実行します。
1. [ツール]→[カスタム関数]に移動し、[作成]をクリックします。
2. 関数に有効な名前を入力します。名前の先頭には[_, a-z, A-Z]を使用でき、名前には[_,a-z, A-Z, 0-9]を含めることができます。特殊文字、スペース、カンマは使用できませんが、アンダースコアは使用できます。
3. [戻り値の種類]のドロップダウンから、作成する関数の戻り値のデータ型を選択します。
4. [作成]ダイアログで、関数に必要な引数とその種類を追加することもできます。
5. エディターで、標準の一覧から式と条件を編集領域にドラッグ&ドロップします。
6. 作成する関数に応じて、変数名と種類を変更します。
7. 指定した変数を使用して、目的の関数の構文を作成します。
8. return文に、表計算シートのセルに結果として表示する変数を入力します。
Delugeを使用した関数の作成について詳しくは、
こちらをクリックしてください。
以下は、単利を計算する関数の例です。この関数を使用するには、[作成]ダイアログに関数名「simple_interest」を入力し、以下のコードをコピーしてエディターに貼り付けます。
int SIMPLE_INTEREST(int Principal, int Rate, int Years)
{
Simple_interest = Principal * Rate * Years / 100;
return Simple_interest;
}
8. ダイアログ上部の[保存]をクリックします。
9. エディターを閉じる前に関数をテストする場合は、[実行]をクリックし、サンプル値を使用して関数を実行します。
その他のアプリケーションからのデータ取得
Zoho製品からの取得
その他のZohoアプリケーションからデータを取り込むには、次の手順を実行します。
1. [挿入]→[カスタム関数]に移動し、[作成]をクリックします。
2. 関数に有効な名前を入力します。名前の先頭には[_, a-z, A-Z]を使用でき、名前には[_,a-z, A-Z, 0-9]を含めることができます。特殊文字、スペース、カンマは使用できませんが、アンダースコアは使用できます。
3. [戻り値の種類]のドロップダウンから、作成する関数の戻り値のデータ型を選択します。
4. [連携]カテゴリーから、Zoho連携の式をドラッグ&ドロップします。
Delugeを使用したZoho製品の連携について詳しくは、
こちらをクリックしてください。
以下は、指定した引数(メールアドレス)に基づいてZoho CRMからデータを取り込む関数の例です。
list CRM_INFO(string Email)
{
resp = zoho.crm.searchRecords('Leads','(Email:starts_with:' + Email + ')');
newList = List();
for each i in resp
{
newObj = Map();
newObj.put('Full Name',i.get('Full_Name'));
newObj.put('Company',i.get('Company'));
newObj.put('Lead Source',i.get('Lead_Source'));
newObj.put('Country',i.get('Country'));
newObj.put('City',i.get('City'));
newList.add(newObj);
}
return newList;
}
5. 指定した引数に基づいてデータを取り込む方法については、次の手順に進みます。必要ない場合は、手順8に進んでください。
6. 関数の最初の文に、目的の引数名を入力します。
7. アプリケーションに応じたタスクの式を入力します。たとえば、Zoho CRMで指定した条件に基づいてデータを検索する構文は次のとおりです。
<response>=zoho.crm.v1.searchRecords(<module_name>, <criteria>, [<from_index>],[<to_index>]);
8. ダイアログ上部の[保存]をクリックします。
9. エディターを閉じる前に関数をテストする場合は、[実行]をクリックし、サンプルの入力値を使用して関数を実行します。
アプリケーションAPIの使用
アプリケーションのAPIで指定されたURLを使用してデータを取得するには、次の手順を実行します。
1. Delugeエディターを開き、[連携]カテゴリーからWebhookの式を編集領域にドラッグ&ドロップします。
2. Webhook連携の構文は次のとおりです。
response=invokeUrl [
url: <url>
type: <GET/POST/PUT/DELETE>
parameters: <parameter>
headers: <headers>
];
Webhook構文の使用方法については、
こちらをクリックしてください。以下は、TrelloのAPI URLを使用してデータを取り込む関数の例です。
list TRELLO_ACTIVITIES() { outPut = List(); resp = getUrl('
https://api.trello.com/1/boards/<boardid>/actions?&key=<apikey>&token=<token>'); resplist = List(); for each activity in resp { resultMap = Map(); resultMap.put('Action', activity.get('type')); resultMap.put('Action Owner',activity.get('memberCreator').get('fullName')); resultMap.put('Date', activity.get('date')); resplist.add(resultMap); } return resplist; }
3. ダイアログ上部の[保存]をクリックします。
4. エディターを閉じる前に関数をテストする場合は、[実行]をクリックし、サンプルの入力値を使用して関数を実行します。
メモ:上記の連携はすべて、表計算シートの所有者の認証トークンでのみ動作します。そのため、連携関数を使用するには、表計算シートの所有者が対象のアプリケーションのアカウントを所有している必要があります。JSONオブジェクトまたはXMLドキュメントからデータを解析することもできます。
関数の戻り値のデータ型
カスタム関数の戻り値には、1つのセルに入力される文字列や整数などを指定できます。また、関数を調整して、対応するセル範囲に入力される1次元または2次元の値の配列として結果を取得できます。手順は次のとおりです。
結果を1次元配列で取得
マップの一覧を入力し、値の一覧を出力として受け取るには、次の手順を実行します。
1. [ツール]→[カスタム関数]に移動し、[作成]をクリックします。
2. 関数に有効な名前を入力します。名前の先頭には[_, a-z, A-Z]を使用でき、名前には[_,a-z, A-Z, 0-9]を含めることができます。特殊文字、スペース、カンマは使用できませんが、アンダースコアは使用できます。
3. ドロップダウンから戻り値のデータ型として「list」を選択します。
4. エディターで入力の種類に「list」を指定し、以下の例の構文に従います。ここでは、入力から一度に1件のマップデータを取得し、ループ処理を実行します。
この関数は、元金、年数、利率の値の範囲に対する単利の値を一覧として垂直方向に返します。
list INTEREST(list values)
{
outPutList = List();
for each recordMap in values
{
Principal = recordMap.get('Principal');
Years = recordMap.get('Years');
Rate = recordMap.get('Rate');
outPutList.add(Principal * Years * Rate / 100);
}
return outPutList;
}
使用例:
5. 指定した引数を使用して、目的の関数の構文を作成します。
6. return文に、表計算シートのセルに結果として表示する変数を入力します。
結果を2次元配列で取得
値の一覧を入力し、マップの一覧を出力として受け取るには、次の手順を実行します。
1. [ツール]→[カスタム関数]に移動し、[作成]をクリックします。
2. 関数に有効な名前を入力します。名前の先頭には[_, a-z, A-Z]を使用でき、名前には[_,a-z, A-Z, 0-9]を含めることができます。特殊文字、スペース、カンマは使用できませんが、アンダースコアは使用できます。
3. [作成]ダイアログで、戻り値のデータ型として「list」を選択します。
4. エディターで、以下の関数のように入力引数を「list」として追加します。
この関数は、入力されたメールアドレスに基づいて、Zoho CRMのデータを2次元配列で返します。
list LEADS_INFO(list EmailList)
{
resultList = List();
for each leads in EmailList
{
resp = zoho.crm.searchRecords('Leads','(Email:starts_with:' + leads + ')');
for each i in resp
{
newObj = Map();
newObj.put('Full Name',i.get('Full_Name'));
newObj.put('Company',i.get('Company'));
newObj.put('Lead Source',i.get('Lead_Source'));
newObj.put('Country',i.get('Country'));
newObj.put('City',i.get('City'));
resultList.add(newObj);
}
}
return resultList;
}
5. 標準の一覧から目的の連携を編集領域にドラッグ&ドロップします。
6. 作成する関数に応じて、変数名と種類を変更します。
7. 構文内に、目的のアプリケーション名またはサービス名、処理、パラメーターを入力します。
8. ダイアログ上部の[保存]をクリックします。
9. 関数の実行時に、入力値の一覧を指定します。戻り値は、入力項目と列見出しの対応する「key」に基づいて、該当する行と列に入力されます。
使用例:
応答速度の最適化
Zoho Sheetのカスタム関数は、Delugeを基盤としています。そのため、表計算シートで関数が使用されるたびに、Zoho SheetからDelugeサーバーへの個別の呼び出しが行われます。このような関数が表計算シート内に多すぎると、処理に多少時間がかかる場合があります。同じ関数を適用するデータ範囲が広い場合は、値の配列を入力として受け取り、1回の呼び出しで1次元または2次元の値の配列を出力として返すように関数を調整することで、この問題を解消できます。
カスタム関数の編集
Zoho Sheetでカスタム関数を編集するには、次の手順を実行します。
1. [ツール]→[カスタム関数]に移動し、[管理]をクリックします。
2. 編集する関数の横にある[編集]をクリックします。
3. 関に必要な変更を加え、上部の[保存]をクリックします。
4. エディターを閉じる前に変更内容を実行またはプレビューする場合は、代わりに[実行]をクリックします。
カスタム関数の使用
カスタム関数は、次のいずれかの方法で使用できます。
- セルに「=」を入力し、続けて関数名を入力します。カスタム関数はアイコンで示され、標準関数は
アイコンで示されます。
- 対象のセルを選択し、右側のパネルにある[関数]アイコン(fx)をクリックして、検索バーに関数名を入力します。関数を選択し、[追加]アイコン(+)をクリックしてセルに挿入します。
メモ:カスタム関数の使用時には、対象の表計算シートファイルの所有者に応じた制限があります。詳細については、こちらをクリックしてください。
カスタム関数の削除
Zoho Sheetでカスタム関数を削除するには、次の手順を実行します。
1. [ツール]→[カスタム関数]に移動し、[管理]をクリックします。
2. 削除する関数の横にある[削除]をクリックします。
メモ:表計算シートからカスタム関数を削除できるのは、所有者のみです。削除した関数は復元できません。
ユーザー単位および表計算シート単位の権限
表計算シートファイルと関数の所有者に応じて、カスタム関数の使用方法にはいくつかの制限があります。
- ファイル内で使用されるすべてのカスタム関数は、表計算シートの所有者の認証トークンを使用して実行されます。
- 表計算シートを共有すると、その表計算シートで使用されているカスタム関数を共同編集者も利用できるようになります。
- 共同編集者が使用できるのは、そのファイル内で表計算シートの所有者がすでに使用しているカスタム関数のみです。関数のスクリプトを表示または編集することはできません。共同編集者に表示されるのは、カスタマイズされた関数の説明と構文のみです。
- 公開済みの表計算シートでは、公開済みのコピーで関数を使用できます。ただし、関数のコードにはアクセスできません。閲覧者が自分のアカウントに保存すると、関数は削除され、その関数を含むセルには#NAMEエラーが表示されます。
メモ:現在、カスタム関数で実行できるウェブフックおよび連携タスクは、1日あたり2,000件までです。この上限を超えると、関数の実行に失敗する場合があります。