GoogleAppsScript(GAS)
GoogleAppsScript(GAS)
function myFunction() {
var spreadsheet = SpreadsheetApp.getActive();
//絶対指定でのセルアクティブ
spreadsheet.getRange('O12').activate();
};
function myFunction1() {
var spreadsheet = SpreadsheetApp.getActive();
//相対指定でのセルアクティブ
spreadsheet.getCurrentCell().offset(0, 0, 8, 10).activate();
};
function myFunction2() {
var spreadsheet = SpreadsheetApp.getActive();
//相対指定でのソート:昇順
spreadsheet.getCurrentCell().offset(0, 0, 8, 10).activate()
.sort({column: spreadsheet.getActiveRange().getColumn() + 6, ascending: true});
};
------------------------------
//フォームのURL設定
//var URL = "https://docs.google.com/forms/d/1pVEelf47wFi9T9MviCIJh_puywvrtTNx2zfUH6-zASM/edit";
//スプレッドシートのID設定
var ssId="1EzXMrQNDoIFMgNqkBsXX85gqCkCtCjgCJ9O60UJuFng";
/*ここから下は書き換えないでください*/
/*****************************************************************************************/
//var Form = FormApp.openByUrl(URL);
/*フォームを受付開始にする関数*/
function open(){
Form.setAcceptingResponses(true);
}
/*フォームを受付終了にする関数*/
function close(){
Form.setAcceptingResponses(false);
}
/*****************************************************************************************/
function test(){
//シートオブジェクトの取得
var sheetId = "1EzXMrQNDoIFMgNqkBsXX85gqCkCtCjgCJ9O60UJuFng";
//var sheetName = 'シート1'
//var sheet = SpreadsheetApp.openById(sheetId).getSheetByName(sheetName)
var src = SpreadsheetApp.openById(sheetId).getSheetByName('シート1')
var dst = SpreadsheetApp.openById(sheetId).getSheetByName('シート2')
var src_last_col = src.getLastColumn();
var src_last_row = src.getLastRow();
var dst_last_row =dst.getLastRow();
//var values = src.getDataRange().getValues();//シートの全データ取得
var values = src.getRange(2, 1, src_last_row-1, src_last_col-1).getValues();//指定の範囲のデータ取得
dst.getRange(dst_last_row+1, 1, src.getLastRow()-1, src.getLastColumn()-1).setValues(values);
//各行の出力
//for (var i in values) {
// Logger.log(values[i])
//}
}
function f_main(){
var formUrl = "https://docs.google.com/forms/d/1pVEelf47wFi9T9MviCIJh_puywvrtTNx2zfUH6-zASM/edit";
var form = FormApp.openByUrl(formUrl);
var sheetId = "1EzXMrQNDoIFMgNqkBsXX85gqCkCtCjgCJ9O60UJuFng";
var src = SpreadsheetApp.openById(sheetId).getSheetByName('フォームの回答 1');
var src_LastCol = src.getLastColumn();
//フォームを受付終了
form.setAcceptingResponses(false);
//1行目のコピー
var values = src.getRange(1, 1, 1, src_LastCol).getValues();//指定の範囲のデータ取得
//f_シートのコピー(sheetId, srcSheet, dstSheet)
f_シートのコピー("1EzXMrQNDoIFMgNqkBsXX85gqCkCtCjgCJ9O60UJuFng", 'フォームの回答 1', 'データ保管');
//フォームのデータを削除
form.deleteAllResponses();
//シートのすべてをクリアする
src.clear();
//1行目の貼り付け
src.getRange(1, 1, 1, src_LastCol).setValues(values);
//フォームを受付開始
form.setAcceptingResponses(true);
}
function f_シートのコピー(sheetId, srcSheet, dstSheet){
//シートオブジェクトの取得
//var sheetId = "1EzXMrQNDoIFMgNqkBsXX85gqCkCtCjgCJ9O60UJuFng";
//var src = SpreadsheetApp.openById(sheetId).getSheetByName('シート1');
//var dst = SpreadsheetApp.openById(sheetId).getSheetByName('シート2');
var src = SpreadsheetApp.openById(sheetId).getSheetByName(srcSheet);
var dst = SpreadsheetApp.openById(sheetId).getSheetByName(dstSheet);
var src_last_col = src.getLastColumn();
var src_last_row = src.getLastRow();
var dst_last_row =dst.getLastRow();
if(1<src_last_row){
//var values = src.getDataRange().getValues();//シートの全データ取得
var values = src.getRange(2, 1, src_last_row-1, src_last_col).getValues();//指定の範囲のデータ取得
dst.getRange(dst_last_row+1, 1, src.getLastRow()-1, src.getLastColumn()).setValues(values);
}
}
function f_サンプル() {
//フォームのURL設定
//var url = "https://docs.google.com/forms/d/1pVEelf47wFi9T9MviCIJh_puywvrtTNx2zfUH6-zASM/edit";
//スプレッドシートのID設定
//var ssid="1EzXMrQNDoIFMgNqkBsXX85gqCkCtCjgCJ9O60UJuFng";
/*ここから下は書き換えないでください*/
/*****************************************************************************************/
var form = FormApp.openByUrl(url);
form.setDescription("bbb");//タイトルの下への記述
//var ss = SpreadsheetApp.getActiveSpreadsheet();
//form.setDestination( FormApp.DestinationType.SPREADSHEET , "1EzXMrQNDoIFMgNqkBsXX85gqCkCtCjgCJ9O60UJuFng" );
var ss = SpreadsheetApp.openById(ssid);
var sheet = ss.getSheetByName("シート1"); // そのシートのシート名をssに設定
//sheet.setName("変更テスト");//シート名を”変更テスト”へ
var range = sheet.getRange("B2").getDisplayValue();
//var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("成績管理シート");
//var ss = SpreadsheetApp.getActive();//スプレッドシートを取得
//var form = FormApp.create("テストフォーム");//フォームを作成
//Form.removeDestination();//フォームの保存先を解除
//Form.setDestination(FormApp.DestinationType.SPREADSHEET,ssId);//フォームの保存先をスプレッドシートに指定
//var form_sheet = getFormSheet();
//form_sheet.setName("フォーム用シート");
//ss.setName("work:回答");//スプレッドシート名の変更
//Logger.log(SpreadsheetApp.getActiveSpreadsheet().getId());
}
function alldelete() {
Form.deleteAllResponses();
}
function onFormSubmit_test(e) {
var form = e.source;
console.log(form.getResponses);
FormApp.getUi().alert("aaa");
//form.getResponses[0].addError('dailyLimitExceeded', 'このフォームは1日1回しか回答できません。');
//e.response.redirect('formError');
var timestamp = new Date().getTime();
var lastSubmitTime = PropertiesService.getUserProperties().getProperty('lastSubmitTime');
console.log(lastSubmitTime);
//PropertiesServiceでスクリプトプロパティをセット
//PropertiesService.getScriptProperties().setProperty('TEST','テストです');
//スクリプトプロパティを取得し、ログ出力
PropertiesService.getUserProperties().setProperty('lastSubmitTime',timestamp);
console.log(timestamp);
//form.getResponses()[0].addError('dailyLimitExceeded', 'このフォームは1日1回しか回答できません。');
e.response.redirect('formError');
}
function myFunction() {
var timestamp = new Date().getTime();
var lastSubmitTime = PropertiesService.getUserProperties().getProperty('lastSubmitTime');
console.log(lastSubmitTime);
//スクリプトプロパティを取得し、ログ出力
PropertiesService.getUserProperties().setProperty('lastSubmitTime',timestamp);
console.log(timestamp);
Browser.msgBox('申し訳ありませんが、同じ日に複数回の回答はできません。');
}
function onFormSubmit(e) {
var form = e.source;
var timestamp = new Date().getTime();
form.getUserProperties().setProperty('aaa', timestamp);
var lastSubmitTime = form.getUserProperties().getProperty(String(lastSubmitTime));
if (lastSubmitTime && (timestamp - lastSubmitTime) < (24 * 60 * 60 * 1000)) {
// 24時間以内に回答している場合はエラーメッセージを表示
form.getResponses()[0].addError('dailyLimitExceeded', 'このフォームは1日1回しか回答できません。');
e.response.redirect('formError');
return;
}
// 回答時間を記録
form.getUserProperties().setProperty('lastSubmitTime', timestamp);
}
function limitOneResponsePerDay(e) {
var formResponses = FormApp.getActiveForm().getResponses();
var userEmail = Session.getActiveUser().getEmail();
// 同じ日に同じユーザーが回答しているかチェック
for (var i = 0; i < formResponses.length; i++) {
if (formResponses[i].getTimestamp().toDateString() == new Date().toDateString()
&& formResponses[i].getRespondentEmail() == userEmail) {
Browser.msgBox('申し訳ありませんが、同じ日に複数回の回答はできません。');
return;
}
}
}
function onFormSubmit_2(e) {
limitOneResponsePerDay(e);
}