そのスクリプトはどのタイミングで実行させるものなのでしょうか?
詳細が分かりませんので、 「フォームが送信された時に、その回答を転記する」 コードをご紹介します。
手順
- フォームの回答がスプシに自動で出力されるように、フォーム側で設定しておく。
- スプシのコンテナバインド型のGASを作成する。
- 下記コードを書く。
- 3.で書いた関数をトリガーに設定する(フォーム送信時)
コード例
javascript
1function transcribeFormResponses(e) {
2 const ss = SpreadsheetApp.getActiveSpreadsheet();
3 const sheet = ss.getSheetByName('Sheet2'); // 転記先のシートを取得
4
5 const values = e.values.map(v => v || '入力なし'); // 送信された回答内容の書き換え
6 // ['1/20/2023 1:16:09', '質問1の回答', '', '質問3の回答'] ←これを
7 // ['1/20/2023 1:16:09', '質問1の回答', '入力なし', '質問3の回答'] ←これに書き換える
8
9 sheet.appendRow(values); // 転記先シートの最終行に値を追加
10}
解説
↓フォーム画面

↓フォームの回答が自動で出力されるシート

↓フォームの回答の回答のない部分を「入力なし」に変換して転記されたシート

フォームを送信すると関数transcribeFormResponses(e)
に設定した引数e(イベントオブジェクト)から、フォームの送信情報が取得できます。
取得できるオブジェクトは下記の通りです。
引数e(イベントオブジェクト)で取得できる情報
javascript
1{
2 "authMode": "FULL",
3 "namedValues": {
4 "質問3": ["質問3の回答"],
5 "質問2": [""],
6 "Timestamp": ["1/20/2023 1:16:09"],
7 "質問1": ["質問1の回答"]
8 },
9 "range": {
10 "columnEnd": 4,
11 "columnStart": 1,
12 "rowEnd": 2,
13 "rowStart": 2
14 },
15 "source": {},
16 "triggerUid": "99999999",
17 "values": ["1/20/2023 1:16:09", "質問1の回答", "", "質問3の回答"] // ←この一次元配列(e.values)を利用する
18}
e.values
で取得できる一次元配列で、値が空白""
の場合、「入力なし」という文字列を代わりに入れ込んでやるように、.map()
で行います。
そしてそのまま、転記先のシートに行追加で値をいれてやるといいです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。