গুগল ফর্মের একটি "তালিকা থেকে চয়ন করুন" শৈলীর প্রশ্নটি কোনও তথ্যের তালিকার সাথে (যেমন একটি স্প্রেডশিটে) লিঙ্ক করার কোনও উপায় আছে কি?


10

কোনও ফর্মের "তালিকা থেকে চয়ন করুন" শৈলীর প্রশ্নটি কোনও তথ্যের তালিকার সাথে (যেমন একটি স্প্রেডশিটে) লিঙ্ক করার কোনও উপায় আছে কি?

এর অর্থ হ'ল স্প্রেডশিটের তালিকায় নতুন বিকল্পগুলি যুক্ত করা হয়েছিল (বা অন্য কোনও জায়গায় তালিকাটি হোস্ট করা সম্ভব হতে পারে) তারা ভবিষ্যতে ফর্মটিতে নির্বাচনের বিকল্প হিসাবে স্বয়ংক্রিয়ভাবে উপস্থিত হবে।

আমার ক্ষেত্রে এটির অর্থ দাঁড়াবে যে ফর্মটি পূরণকারী প্রতিক্রিয়াশীলরা স্বেচ্ছাসেবীর বিস্তৃত তালিকা থেকে স্বতন্ত্র স্বেচ্ছাসেবীর অধিবেশনে কোন স্বেচ্ছাসেবক উপস্থিত ছিলেন তা বেছে নিতে সক্ষম হবেন (স্বতন্ত্রভাবে প্রতিটি নাম লেখার চেয়ে) স্বেচ্ছাসেবীরা স্বতঃস্ফূর্তভাবে যোগদান করে, তালিকার অপশনগুলিতে স্বয়ংক্রিয়ভাবে প্রতিবার একটি নতুন বিকল্প যুক্ত করার পরিবর্তে তালিকার বিকল্পগুলিতে এইগুলি যুক্ত করা সম্ভব হলে প্রচুর সহায়ক হবে।

এটি সম্ভব কিনা আমার কোনও ধারণা নেই তবে আমি যদি সত্যিই এটির প্রশংসা করব তবে যদি কেউ এটি করার কোনও উপায় প্রস্তাব করতে পারে।


খারাপ কথা, আপনি প্রদত্ত সমস্ত উত্তর দেখতে আশেপাশে নন ....
জ্যাকব জ্যান তুইনস্ট্র

উত্তর:


3

টম হরউডের উত্তর দুর্দান্ত কাজ করে তবে কেবল তার কোডের একটি গুরুত্বপূর্ণ ত্রুটি সংশোধন করার পরে। LIST_DATAউপাদানগুলির সমস্ত উল্লেখ সূচীটি ব্যবহার করে করা উচিত j(নয় i)। টমের পোস্টে মন্তব্য করার মতো পর্যাপ্ত কর্মফল আমার কাছে নেই তাই পুরোপুরি মনটি এখানে রয়েছে:

নীচে সংশোধিত কোড দেওয়া আছে। আমি LIST_DATAউপাদানগুলির নামও পরিবর্তন করেছি যাতে তারা আরও কিছুটা বর্ণনামূলক হয়। এটিও দেখায় যে টম কীভাবে এগিয়ে ছিলেন (কুদোস!) এবং একাধিক ফর্ম উপাদানকে একাধিক স্প্রেডশিট তালিকার বিষয়বস্তু সহ আপডেট করার সুবিধা প্রদান করেছিল।

var FORMID = "PUT_YOUR_FORM_ID_HERE";
var LIST_DATA = [{formFieldTitle:"Job Number", worksheetName:"JobNumbers"},
             {formFieldTitle:"Task 1 Category", worksheetName:"TaskCategories"},
             {formFieldTitle:"Task 2 Category", worksheetName:"TaskCategories"},
             {formFieldTitle:"Task 3 Category", worksheetName:"TaskCategories"},
             {formFieldTitle:"Task 4 Category", worksheetName:"TaskCategories"},
             {formFieldTitle:"Task 5 Category", worksheetName:"TaskCategories"},
             {formFieldTitle:"Task 6 Category", worksheetName:"TaskCategories"},
            ];

function onOpen(e){
  var menuEntries = [];
  menuEntries.push({name: "Update Lists", functionName: "updateLists"});
  SpreadsheetApp.getActiveSpreadsheet().addMenu("List Updater", menuEntries)
};

function updateLists() {
  var form = FormApp.openById(FORMID);
  var items = form.getItems();
  for (var i = 0; i < items.length; i += 1){
    for (var j = 0; j < LIST_DATA.length; j += 1) {
      var item = items[i]
      if (item.getTitle() === LIST_DATA[j].formFieldTitle){
        updateListChoices(item.asListItem(), LIST_DATA[j].worksheetName);
        break;
      }
    }
  }
}

function updateListChoices(item, sheetName){
  var data = (SpreadsheetApp.getActiveSpreadsheet()
              .getSheetByName(sheetName)
              .getDataRange()
              .getValues());
  var choices = [];
  for (var i = 0; i < data.length; i+=1){
    choices.push(item.createChoice(data[i][0]));
  }
  item.setChoices(choices);
}

এটি কীভাবে কাজ করবেন তা সংক্ষিপ্ত করার জন্য (আমার মতো যারা প্রথমবারের মতো গুগল অ্যাপস স্ক্রিপ্ট ব্যবহার করছেন)। আশা করি এটি আরও বোধগম্য করার জন্য আমি উপরের কোড স্নিপেটে শীটের নাম এবং ফর্ম ফিল্ডের নাম উল্লেখ করেছি:

  1. আপনার ফর্মের সাথে সম্পর্কিত স্প্রেডশিটে:

    • একটি নতুন কার্যপত্রক তৈরি করুন। এটিতে আপনাকে ক্ষেত্রের সাথে যুক্ত হওয়া আইটেমগুলির তালিকা থাকবে। কার্যপত্রকটিকে একটি উপযুক্ত নাম দিন (উদাহরণস্বরূপ TaskCategories)। সেই কার্যপত্রকের প্রথম কলামে আপনার আইটেমের তালিকা সেখানে রাখুন। সেই শীটটিতে সমস্ত অতিরিক্ত কলাম এবং সারি মুছুন (এটি হয়ত প্রয়োজন বা নাও হতে পারে - পরীক্ষিত হয়নি)
    • সরঞ্জাম মেনু থেকে, "স্ক্রিপ্ট সম্পাদক" নির্বাচন করুন। স্ক্রিপ্ট সম্পাদকটিতে উপরের কোড স্নিপেটটি অনুলিপি করুন এবং আটকান। আপনাকে স্ক্রিপ্টের নিম্নলিখিত অংশগুলি পরিবর্তন করতে হবে:
      • ভেরিয়েবলের মানটি FORMIDআপনার ফর্মের আইডিতে পরিবর্তন করতে হবে। পছন্দসই ফর্মটির জন্য আপনার ব্রাউজারের URL বারে আইডি হ'ল দীর্ঘ কোড (ফরোয়ার্ড স্ল্যাশের মধ্যে)।
      • LIST_DATAপরিবর্তনশীল আপনার ফর্ম এবং আপনার প্রয়োজন অনুসারে পরিবর্তন করা প্রয়োজন হবে। আপনি খেয়াল করতে পারেন যে প্রতিটি আইটেম LIST_DATAএকটি formFieldTitleএবং এর টিপল worksheetName। পূর্বেরটি ফর্ম ক্ষেত্রের নাম (এটি অবশ্যই "তালিকা থেকে চয়ন করুন" ধরণের ক্ষেত্রের হতে হবে) - যে ফর্ম সম্পাদককে এটি বলা হয় Question Title। দ্বিতীয়টি আপনার পূর্বে তৈরি করা কার্যপত্রকের নাম যা এতে আপনি ক্ষেত্রটি জনপ্রিয় করতে চান সেই আইটেমের তালিকা রয়েছে। আপনার প্রয়োজন মতো তালিকায় এই যতগুলি টিপল যোগ করুন।
      • এখন স্ক্রিপ্টটি সংরক্ষণ করুন (সেভ আইকনে ক্লিক করুন)
      • স্ক্রিপ্ট সম্পাদক মেনু থেকে 'রান' চয়ন করে এবং "আপডেটলিস্টগুলি" চয়ন করে স্ক্রিপ্টটি পরীক্ষা করুন। আপনি যখন প্রথমবার এটি করবেন তখন এটি অনুমতি চাইবে। যদি স্ক্রিপ্টটি সফল হয় তবে আপনি পর্যবেক্ষণ করতে পারবেন যে আপনার ফর্মটিতে এখন নির্দিষ্ট ক্ষেত্রগুলি জনবহুল রয়েছে, অন্যথায় আপনি স্ক্রিনে একটি ত্রুটি বার্তা নোট করবেন।
  2. আপনি যদি স্প্রেডশীটে ফিরে যান, আপনার এনটাইটেলযুক্ত একটি নতুন মেনু আইটেমটি দেখতে হবে List UpdaterUpdate Listsএটিতে একটি আইটেম রয়েছে যা আপনার প্রতিবার আপনার তালিকা (গুলি) এর কার্যপত্রক (গুলি) বদলানোর জন্য চালানো দরকার - এটি ফর্মটি সেই অনুযায়ী আপডেট করবে।

আমি আরও লক্ষ্য করি, পাঠকদের উপকারের জন্য, সেই ফর্মর্যাঞ্জার নতুন গুগল স্প্রেডশিটগুলির সাথে কাজ করে না। ফর্মর্যাঞ্জার বিকাশকারীরা তাদের ওয়েবসাইটে ততটুকু বলে। সম্ভবত / আশা করি এটি ভবিষ্যতে পরিবর্তিত হবে, তবে উপরের কোডটি পোস্ট করার সময়টি আমার পক্ষে কাজ করে এবং আমি এটি ক্লায়েন্টের জন্য একটি মোতায়েনের আকারে ব্যবহার করি।


আমি মনে করি এটি কোনও স্ক্রিপ্ট বা কোনও কিছুর সাথে সম্পর্কিত না হয়ে অভিজ্ঞদের জন্য ধাপে ধাপে অন্তর্ভুক্ত করার জন্য এটি দুর্দান্ত উত্তর। এছাড়াও, জেএস কোড ফর্ম্যাটিংয়ে পিক হওয়ার জন্য, LIST_DATA অ্যারের প্রারম্ভিককরণের পরে একটি আধা-কোলন যুক্ত করুন। এখন এটি আরও কাস্টমাইজ করতে, যেমন আপনার যদি একটি শিরোনাম কলাম ব্যবহার করে "(var i = 1; i <ডেটা দৈর্ঘ্য; i + = 1) {// সূচী 1 এ সূচনা করে শিরোনাম সারিটি এড়িয়ে যান" "
গ্যারি

ঠাহর জন্য :-) ধন্যবাদ @Gary - সম্পাদিত অনুপস্থিত সেমিকোলন ঠিক করতে
allnatural

2

আপনি form.getItems () ব্যবহার করে একটি সাধারণ ফর্ম এবং একটি স্ক্রিপ্টের সাহায্যে এটি করতে পারেন, লুপটিতে আইটেমটি সন্ধান করুন, তারপরে আইটেম.এললিস্টিমেট ()। সেটচয়েসস (...)

এখানে কিছু নমুনা কোড রয়েছে যা আমি এই উদাহরণ শিট এবং ফর্মটিতে ব্যবহার করেছি

var FORMID = "YOUR FORM ID HERE";
var LIST_DATA = [{title:"Who's your tutor", sheet:"TutorName"}]

function onOpen(e){
  var menuEntries = [];
  menuEntries.push({name: "Update Lists", functionName: "updateLists"});
  SpreadsheetApp.getActiveSpreadsheet().addMenu("List Updater", menuEntries)
}

function updateLists() {
  var form = FormApp.openById(FORMID);
  var items = form.getItems();
  for (var i = 0; i < items.length; i += 1){
    for (var j = 0; j < LIST_DATA.length; j+=1) {
      var item = items[i]
      if (item.getTitle() === LIST_DATA[j].title){
        updateListChoices(item.asListItem(), LIST_DATA[j].sheet);
        break;
      }
    }
  }
}

function updateListChoices(item, sheetName){
  var data = (SpreadsheetApp.getActiveSpreadsheet()
              .getSheetByName(sheetName)
              .getDataRange()
              .getValues());
  var choices = [];
  // If your sheets have headers, change i = 0 to i = 1
  for (var i = 0; i < data.length; i+=1){
    choices.push(item.createChoice(data[i][0]));
  }
  item.setChoices(choices);
}

ফর্মের লিঙ্কটি এখন ঠিক করা হয়েছে
টম হরউড

1

ফর্ম ভ্যালু নামে একটি গুগল ফর্ম অ্যাড-অন রয়েছে যা কমপক্ষে একটি আধা-স্বয়ংক্রিয় উপায় প্রস্তাব করে: যখনই আপনি স্প্রেডশীটে আপনার উত্তরগুলি পরিবর্তন করেন আপনার নিজের উত্তরগুলিতে ম্যানুয়ালি পছন্দগুলি পুনরায় বসানো দরকার, তবে কমপক্ষে এটি করা সহজ নয় ।


0

আপনি নিয়মিত গুগল ফর্মগুলির সাথে এটি করতে পারবেন না।

তবে আপনি গুগল অ্যাপস স্ক্রিপ্ট এবং বিশেষত ইউআইএস সার্ভিস ব্যবহার করে আপনার নিজস্ব জিইউআই তৈরি করতে পারেন । সচেতন থাকুন, তবে আপনাকে পুরো জিইআইআই পুনরায় তৈরি করতে হবে - আপনি আপনার বিদ্যমান ফর্মের অংশগুলি ব্যবহার করতে পারবেন না।

বিকল্পভাবে, আপনি জিইউআই বিল্ডার ব্যবহার করতে পারেন । এটি গুগল অ্যাপস স্ক্রিপ্ট জিইউআই-এর জন্য ডাব্লুওয়াইএসআইডাব্লুওয়াইজি সম্পাদক।

আপনি যেটি বেছে নিন, আপনি যা চান তা অর্জন করতে আপনার কিছু প্রোগ্রামিং করার জন্য প্রস্তুত হওয়া উচিত।


1
জিইউআই নির্মাতা হ্রাস করা হয়েছে, সুতরাং আমি এটি আর ব্যবহার করব না।
জ্যাকব জানু টিনস্ট্রা

ইউআইএসওয়্যারও হ্রাস করা হয়।
রুবান

0

এর জন্য একটি স্ক্রিপ্ট রয়েছে, যার নাম ফর্মর্যাঞ্জার: https://docs.google.com/docament/d/1YvgrxeZJNb2CBpSra1j59Mh1bVpk4vBQYLOoyVjby7A/edit?hl=en&forhl=1


নোট করুন যে যখনই লিঙ্কযুক্ত স্প্রেডশিটে আপনার ডেটা পরিবর্তন হয় তখন আপনাকে এই স্ক্রিপ্টটি ম্যানুয়ালি পুনরায় চালানো দরকার!
কিনান

0

এর জন্য ট্রিগার [ 1 ] [ 2 ] সেট করে তালিকা আপডেট করে স্বয়ংক্রিয় করার একটি উপায় রয়েছে Update Lists

পাথটি হ'ল স্ক্রিপ্ট সম্পাদক -> সংস্থানসমূহ -> বর্তমান প্রকল্পের ট্রিগার

তারপরে add a new trigger,। প্রদত্ত উদাহরণগুলির জন্য, আপনি updatesListচালাতে from spreadsheetএবং সেট করতে পারেন On form submission। এইভাবে, ফাংশনটির onOpenপ্রয়োজন হবে না।


-1

হ্যাঁ এটি করা যেতে পারে, উত্তরটি খুঁজে পেতে এবং তারপরে এটি আমার উদ্দেশ্যগুলির জন্য বিকাশ করে দিনের একটি ভাল অংশ ব্যয় করেছিলাম তবে এটি করা যায়।

আমার প্রয়োজন ছিল লোকেরা স্বেচ্ছাসেবক করতে চান এমন অঞ্চলগুলির তালিকা থেকে একাধিক বাক্স চেক করার জন্য স্বেচ্ছাসেবীর সাইন আপ ফর্ম থাকা have একাধিক বাক্সের সাথে একটি প্রশ্ন, সমস্যাটি হ'ল ফলস্বরূপ গুগল স্প্রেডশিট কেবল একটি কক্ষে যাচাই করা সমস্ত কিছু তালিকাভুক্ত করেছে। সেখানে 21 জন স্বেচ্ছাসেবীর বিকল্প ছিল, যাতে স্পষ্টভাবে সেই তথ্যের জন্য কোনও কার্যকর বিন্যাস হবে না। আপনি যা চেয়েছিলেন তা বলতে আমি যা বুঝতে পেরেছিলাম তা করতে চেয়েছিলাম, আমি তার নিজস্ব কলামে 21 টি বিকল্পের সাথে একটি কলাম রাখতে চাই। তারপরে তাদের টাইমস্ট্যাম্পের পরে (ফর্ম উত্পন্ন), নাম, ইমেল এবং ফোনের মধ্যে "হ্যাঁ" বা ফাঁকা রেখে 21 টি কলাম রয়েছে। কলাম শিরোনাম হ'ল প্রতিটি বিকল্প যা তারা বেছে নিতে পারে। কেউ কেউ ভাবতে পারেন যে "হ্যাঁ" বা "না" দিয়ে কেন কেবল 21 টি প্রশ্ন নেই।

প্রথম দ্রষ্টব্য যে কেউ যখন কোনও গুগল ফর্ম পূরণ করে তখন ফলাফল স্প্রেডশিট পরবর্তী ফাঁকা সারিতে ডেটা যুক্ত করার পরিবর্তে একটি সারি সন্নিবেশ করায়। এর অর্থ হ'ল সারিটিতে থাকা যে কোনও সূত্রটি সবেমাত্র টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো হয়ে গেছে এবং সূত্রের নতুন ডেটাতে ইনপুট ডেটা নিয়ে কাজ করার জন্য পরবর্তী দুটি সূত্র নেই two এর বাইরে যেতে আমি স্প্রেডশিটে একটি শিট যুক্ত করেছি (ওয়ার্কবুক)। আমি ব্রেটথথস থেকে http://productforums.google.com/forum/#!topic/docs/dlW6U6cHuKw এ ইনপুটটি ব্যবহার করেছি তাই আমি এই 2 য় শীটের সেল এ 1 তে নিম্নলিখিত সূত্রটি প্রবেশ করিয়েছি : = এআরএএফআরএমউলা (শিট 1! এ 1: এ)। আমি কলাম E এর মাধ্যমে প্রতিটি কলামের জন্য একইভাবে করেছি Col

তবুও দ্বিতীয় শীটে, এফওয়াইয়ের কলামগুলির সারি 1 এর সর্বাধিক স্বেচ্ছাসেবীর জন্য প্রস্তুত অঞ্চলগুলির চেকলিস্ট থেকে প্রতিটি চেকবক্স বিকল্পের পাঠ্যের মতো শিরোনাম রয়েছে। তারপরে কলাম জেড হ'ল ফর্মের পরবর্তী এবং শেষ প্রশ্ন, এটি একটি সংক্ষিপ্ত পাঠ্য প্রশ্ন যা কেবলমাত্র "অতিরিক্ত মন্তব্যসমূহ" শিরোনাম ছিল। সেই কলামের জন্য আমি = এআরএএফআরএমউলা (শিট 1! এফ 1: এফ) ব্যবহার করেছিলাম চেকবক্সের প্রশ্নগুলির শেষে "অন্য" বিকল্পটি ব্যবহার করার পরিবর্তে আমি এটি একটি পৃথক প্রশ্ন হিসাবে করেছি কারণ সেখানে টান দেওয়ার কোনও ভাল উপায় বলে মনে হয় নি did স্প্রেডশিটে ডেটা আউট।

এখন সেই অংশে যা উত্তর দেয় আপনি কীভাবে "হ্যাঁ" বা খালি ফাঁকা দিয়ে কলামগুলি পৃথক করতে কলাম E এর (যেটিতে 21 টি আইটেম তালিকাভুক্ত থাকতে পারে) সেল থেকে তথ্য পাবেন। দ্বিতীয় শীটে F2-র সূত্রটি হ'ল = iferror (যদি (অনুসন্ধান (F $ 1, $ E2)> 0, "হ্যাঁ",)) এই সূত্রটি কলাম শিরোনাম (F1) এর সঠিক পাঠ্যটি খুঁজে পাওয়া যায় কিনা তা সন্ধান করছে E2-এ, যদি এটি হয় তবে এটি একটি "হ্যাঁ" ফিরিয়ে দেয়, যদি তা খালি ছেড়ে দেয় না।

এফ 2 তে রেফারেন্সযুক্ত এই সূত্রটি লিখিত হয়েছে (F4 কী এর মাধ্যমে "$" ব্যবহার করে) যাতে F2 জিওয়াই থেকে সারি 2-এ প্রতিটি কক্ষে অনুলিপি / আটকানো যায় (গুগল স্প্রেডশিট ড্র্যাগ / অনুলিপি দ্বারা সূত্রগুলি অনুলিপি সমর্থন করতে পারে না যেমন আপনি পারেন) এক্সেলে, তবে এটি F2, তারপরে CTRL + C, তারপরে G2: Y2, তারপরে CTRL + V নির্বাচন করে করা যায়। তারপরে আমি একই পদ্ধতিটি অনুলিপিটি F2: Y2 থেকে F3: Y100 এঁকেছি copy

এরপরে আমি দ্বিতীয় শীটে কলাম ই লুকিয়ে রেখেছিলাম যাতে ফলস্বরূপ স্প্রেডশিটটি আরও কমপ্যাক্ট হয় (দীর্ঘ উত্তর থেকে সমস্ত মোড়ানো এড়ানো)।

এখন আমি 99 জন স্বেচ্ছাসেবীর তাদের দ্রুত এবং সহজ ফর্মের মাধ্যমে গ্রহণের জন্য প্রস্তুত। কলামগুলির শীর্ষে ফিল্টার বিকল্পগুলি ব্যবহার করা কী কী অঞ্চলের জন্য উপলব্ধ ছিল তা দেখতেও সহায়তা করেছিল।

একটি চূড়ান্ত হতাশা যে আমি সমাধান হয়নি। আমি আমার ফর্মুলা এবং ডিজাইন পরীক্ষা করার জন্য কিছু বোগাস ফর্ম পূরণ করেছি, তারপরে আমি লিঙ্কযুক্ত স্প্রেডশিট থেকে এই সারিগুলি মুছলাম। আমার সাথে কয়েক জন লোক ছিল যারা সদৃশ ফর্মগুলি পূরণ করেছিলেন, আমি তাদের সারিগুলিও মুছলাম। পণ্য ফোরামে উল্লেখযোগ্য, আমি একমাত্র হতাশ হয়েছি না যে গুগলের কাছে এখনও "প্রতিক্রিয়াগুলির সংক্ষিপ্তসার" (স্প্রেডশিটের "ফর্ম" ট্যাবের অধীনে পাওয়া যায়) এর মধ্যে পরীক্ষার / বোগাস / সদৃশ ডেটা রয়েছে। সুতরাং পরীক্ষার / জালিয়াতি / সদৃশ ফর্মগুলি থেকে ডেটা সরাতে যদি সারিগুলি মুছে ফেলা হয় তবে প্রতিক্রিয়াগুলির সংক্ষিপ্ততা নির্ভুলতার জন্য অযোগ্য।

তবে এটি সম্পন্ন হয়েছে এবং পরের বারের মতো আমার প্রয়োজন মতো এই নোটগুলি সংরক্ষণ করছি, আমি আত্মবিশ্বাসী যে এটি পরের বারের চেয়ে 30 মিনিটেরও কম সময়ে করা সম্ভব in

আশা করি এটি সহায়তা করে, যদি কোন প্রশ্ন থাকে তবে আমাকে জানান।


2
এটা অনেক টেক্সট।
জ্যাকব জানু টিনস্ট্রা

চেষ্টার জন্য
কুডোস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.