お世話になります。
google formsを使ってタスク依頼フォームを作成中なのですが、問題が発生しておりアドバイスをいただきたく質問いたしました。
作成中システムの仕様は以下の想定です。
①フォームを入力して送信
②スプレッドシートに記入内容を連携(ここでタスク管理も行う、ステータス等一部カラムは手動追加)
③依頼先のgoogleカレンダーに期日を設定する
ある程度作成は完了しましたが、以下問題が発生している状況です。
・カレンダーに時間がずれて設定されてしまう
例)18:00と記入してフォーム送信すると18:37で設定されてしまう
・手動で追加したカラムがコードを書いても更新されない
→下記コード部分でステータス、カレンダーIDの設定を実施していますが、スプレッドシート上に反映されない
カラムは以下の構成となります。
・フォームで作成しているカラム
タスク名、依頼内容、依頼者、依頼先、優先度、納期(日付)、納期(時刻)、備考
・手動で追加しているカラム
ステータス、カレンダーID
以下が現在書いているGASのコードです。
---------------------------------------------------------------------
function addTaskEvents() {
//カレンダーIDでカレンダーを取得
//現在は試作のため自分のIDのみ設定しているが、依頼先で設定した人物を対象にしたい
var myCal = CalendarApp.getCalendarById('自分のカレンダーID');
//シートを取得
var mySheet = SpreadsheetApp.openById('対象のシートID');
//シートデータを取得
var dat = mySheet.getDataRange().getValues();
for(var i=1;i<dat.length;i++) {
if(dat[i][10] == "") {
// 納期(日時)をセット
var evtDate = new Date(dat[i][4]);
var evtTime = new Date(dat[i][5]);
evtDate.setHours(evtTime.getHours());
evtDate.setMinutes(evtTime.getMinutes());
/* イベントの追加・スプレッドシートへの入力 */
//カレンダーにタスクをイベントとして追加
var myEvt = myCal.createEvent("【期限】"+dat[i][1],evtDate,evtDate);
//ステータス、イベントIDを更新
dat[i][10]="未着手";
dat[i][11]=myEvt.getId();
}
}
mySheet.getRange(1,1,i,11).setValues(dat);
}
---------------------------------------------------------------------
参照元は以下サイトになります。
https://tonari-it.com/gas-form-calendar-create-e …
初心者なもので、サイトの進め方をベースに一部改変しているため正しい書き方ができていないものと思っていますが、ご専門の方にご教授いただけますと幸いです。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
カレンダーに時間がずれて設定されてしまう問題は、フォームから送信される時間がGMTになっているためです。
GMTから日本時間に変更するには、次のコードを追加してください。```
var evtDate.setTimezone(new DateTimeZone('Asia/Tokyo'));
```
手動で追加したカラムがコードを書いても更新されない問題は、スプレッドシートの更新権限が正しく設定されていないためです。スプレッドシートの更新権限を「編集者」に変更してください。
手順は次のとおりです。
1. スプレッドシートを開きます。
2. 画面右上の歯車アイコンをクリックします。
3. 設定を選択します。
4. 共有と権限を選択します。
5. ユーザーまたはグループを追加を選択します。
6. ユーザー名またはメールアドレスを入力します。
7. 権限を編集者に変更します。
8. 保存をクリックします。
これで、手動で追加したカラムがコードを書いても更新されるようになります。
別の質問と合わせまして、ご回答ありがとうございます。
すみません。時間の件は何故か改善したようです。
念のためご教授いただいた内容も試しましたが、以下となりました。
>var evtDate.setTimezone(new DateTimeZone('Asia/Tokyo'));
こちら追加したところsyntax errorとなってしまいました。
調べてみると、既にappsscript.jsonではtimezone設定がされているようでした。
カラムの件ですが、フォーム作成時に併せてスプシを作成しているので私自身は編集者になっているかと存じます。
ご教授いただいた内容も(若干手順は異なりましたが)設定して再トライしたところ、やはりステータスやカレンダーIDはスプシに反映されませんでした・・・
但し、デバッグで確認するとカラムにデータ自体は入っているようでした。
上記が試した結果の共有となりますが、解決策に思い当たるところございましたら改めてご教授いただけますと幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript gasについて 1 2022/05/31 21:51
- JavaScript Google reCAPTCHAについて 1 2023/02/22 14:37
- UNIX・Linux Linuxについて質問です。 以下のような設定をしたMakefileを作成するにはどう記述すればよい 1 2023/02/03 20:10
- その他(プログラミング・Web制作) google formsで回答者をスプレッドシートに記載する方法 1 2023/06/23 11:22
- JavaScript javascriptでテーブルに追加した項目のid追加してローカルストレージを操作したい 5 2023/01/01 15:52
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Google Drive Googleカレンダーの新規予定登録のカレンダー変更方法 2 2022/06/11 19:16
- JavaScript Google scriptについて 至急scriptを作成して欲しいです! 現在、Googlefor 1 2023/07/01 20:08
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLで特定の項目の重複のみを排...
-
Zend_DBを使ったselectで文字が...
-
likeとjoinで詰まってます。助...
-
OnNotifyでカーソル変化を禁止...
-
for whichの使い方
-
差し込み後、元データを変更し...
-
pythonにてseleniumを使うも、...
-
マイクラPC版のコマンドで効率...
-
グループ毎の最大値を持つデー...
-
次の並び替え問題を教えてくだ...
-
Exel VBA 別ブックから該当デ...
-
処理件数を非表示にしたい
-
エクセルで最後の文字だけ置き...
-
SQL文で、合計が0のレコードを...
-
chatgptでつくってもらったコー...
-
特定の文字列で列を区切るには?
-
英語ができる方、問題をお願い...
-
ExcelのVBAコードについて教え...
-
パイソンプログラム
-
広告ブロッカーのアドカードと...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQLで特定の項目の重複のみを排...
-
バッチでcsvファイルの指定のカ...
-
COBOLについて
-
リストビューの項目の内容を変...
-
DataViewで複数条件の...
-
php mysql で WHERE句内に変数...
-
Zend_DBを使ったselectで文字が...
-
fgetcsvでCSVを取得した際のnul...
-
ListViewのカラムの色の変更
-
google formsを使ったタスク依...
-
COBOL プログラミング
-
DataGridView 右詰め
-
初心者)DataGridViewの入力桁...
-
Pythonについて
-
前回ご教授いただいたコードに...
-
FormulaR1C1でSUMIF変数指定
-
C# リストビューの値を取得
-
このvbaで指定したフォルダから...
-
VB6リストボックスでの文字...
-
Chromeのデベロッパーツール プ...
おすすめ情報