Google Forms ワークフローにフォーミュラフィールドを追加する
フォームの回答をもとに、回答者に直接入力を求めることなくコンテンツを挿入したい場合があります。たとえば、オフィスの所在地を選択した場合に、そのオフィスの住所、電話番号、メールアドレスを自動入力したいといったケースです。
多くの場合、タグフォーミュラやタグの if 文を使用することで対応できます。それらが適さない場合は、このページで Google Forms の回答シートにフォーミュラ列を追加し、そのシートをワークフローのソースとして使用する方法を説明します。
回答シートにワークフローを設定する
Google Form で Responses (回答) タブをクリックし、Google Sheets アイコンをクリックして回答シートを作成またはリンクします。

新しいスプレッドシートを作成するか、既存のスプレッドシートにタブを追加するかを選択できます。以降は、フォームへの送信があるたびに、このシートに行として記録されます。
Portant で新しいワークフローを作成し、そのシートをソースとして選択します。auto-create (自動作成) をオンにすると、Portant は数分ごとにシートを確認し、新しい行に対してワークフローを実行します。

回答シートにフォーミュラ列を追加する
ここまでは通常の Google Sheets ワークフローと同じです。ポイントは、フォームの回答をもとに追加の値を計算するフォーミュラ列を追加することです。方法は 2 つあります。
オプション 1: 回答シートの 2 行目に配列フォーミュラを入力する
最後のフォーム回答列のすぐ右にある 2 行目のセルをクリックします。フォーミュラを =ARRAYFORMULA(...) の形式で入力します。配列フォーミュラは、新しい回答が届くたびに列全体に自動的に適用されます。
=ARRAYFORMULA(A2:A*2)
これは、すべての行で A 列の値を 2 倍にします。
IF 文を使用して条件に応じたコンテンツを挿入することもできます。たとえば、次のフォーミュラは A 列が "Yes" の場合に "This value is Yes" を返し、それ以外の場合は空白を返します。
=ARRAYFORMULA(IF(A2:A="Yes", "This value is Yes", ""))
Enter キーを押すと、新しい回答を含むすべての行にフォーミュラが適用されます。
オプション 2: 新しいタブに配列フォーミュラを入力する
回答シートをそのまま保持したい場合、またはフォーミュラが配列と相性が悪い場合は、回答データを新しいタブにコピーし、そこにフォーミュラを追加します。
回答をミラーリングするために、配列フォーミュラの使用をお勧めします。
=ARRAYFORMULA(Sheet1!A:X)
A は最初の回答列、X は最後の回答列です。次に、ミラーリングされたデータの右側に追加のフォーミュラ列を追加します。Portant のソースとしてこの新しいタブを指定してください。
空の行でエラーやゼロが表示されないようにする
フォーミュラが列全体に適用されると、空の行で #REF!、#N/A、または 0 が返される場合があります。Portant はこれらを入力済みとして扱うため、auto-create が正常に動作しなくなる可能性があります。入力が空の場合に空白を返すようにフォーミュラをラップしてください。
エラーを処理するには、IFERROR を使用します。
=IFERROR(A2*100, "")
空白を処理するには、IF を使用します。
=IF(A1="", "", A1*100)
最も堅牢な方法として、両方を組み合わせることもできます。
=IFERROR(IF(A1="", "", A1*100), "")
