質問: FormApp.getActiveForm(); //アクティブフォームを取得 range.getRange(range.getRow(),3).setValue("YYYY/MM/DD"); range.getRange(range.getRow(),4).setValue("hh:mm"); } ReferenceError: 「range」が定義されていません。(行 5、ファイル「コード」) フォームはgetRangeではない?
回答: > > TypeError: null のメソッド「getLastRow」を呼び出せません。(行 4、ファイル「コード」) > > > 3行目の`var mySheet = SpreadsheetApp.getActiveSheet();`でスプレッドシートを取得できていないからです。 第3者からのアクセスを想定するなら、`openById(スプレッドシートのID)`を使用するようにしましょう。 > > ReferenceError: 「range」が定義されていません。(行 5、ファイル「コード」) > > > Form関連クラスのメソッドにgetRangeはありません、という以前に、関数中に「range」を定義していません。そのままの意味です。 なお、フォームへのセット用に**現在時**を取得したいのなら、GAS(JavaScript)で生成すれば良いのではないでしょうか? あえてスプレッドシートへアクセスする必要性があるなら別ですが、質問内容やコード中からは読み取れません。 その上で、質問意図をかなり推し量った回答をしますと、**別途生成したリンクから、フォームへアクセスさせる**という方法なら実現できます。 1. フォーム編集画面より 「(縦の)...」→事前入力したURLを取得 2. 必要箇所に日付と時間を入力→「リンクを取得」をクリック 以下のようなURLが取得できますので、必要箇所を現在日時かつ指定フォーマットで差し替え、リンク用のURLを組み立てれば良いです。 `https://docs.google.com/forms/d/e/フォームのID/viewform?usp=pp_url&entry.10桁ぐらいの数字=yyyy-MM-dd&entry.10桁ぐらいの数字=hh:mm` あとはご自身で試行錯誤してください。 [参考] Class Form Google検索結果