簡體   English   中英

我正在嘗試取消鏈接,並刪除谷歌表單到谷歌工作表鏈接,然后將其重新鏈接到同名的新工作表

[英]I am trying to unlink, and delete a google form to google sheet link and then relink it to a new sheet with the same name

在我添加虛擬表“無”之前,新創建的表在 foreach 循環期間沒有被拾取。 但是,如果刪除的工作表不是 Google 工作表中的第一個子工作表,它也可以正常工作。 不知道為什么會這樣。

function clearForm() {
  var deleter = 0;
  var itemsToDelete = form.getItems();
  form.deleteAllResponses();
  form.setShowLinkToRespondAgain(false);
  form.removeDestination();
  itemsToDelete.forEach(function(next) {
    deleter++;
    form.deleteItem(next);
  });

  SpreadsheetApp.openById(currentSheetID).deleteSheet(currentSheet);

  form.setDestination(FormApp.DestinationType.SPREADSHEET, currentSheetID);

  mainSheet.insertSheet("None", 0);

  var ss = mainSheet.getSheets();

  var v = 1;
  ss.forEach(function(next) {
    Logger.log(v++);
    if (next.getName() != "Form Responses 2" && next.getName() !=
      "Form Responses 1" && next.getName() != "None") {
      next.setName(currentSheetName);

    }
  });

SpreadsheetApp.openById(currentSheetID).deleteSheet(mainSheet.getSheetByName(
    "None"));
}

我了解您的目標是獲取現有的表格/表格對,刪除表格,創建新表格並將其加入原始表格。 如果我的理解是正確的,那么您只需要對代碼進行一些小的調整即可實現您的目標。

第一件事是將舊的響應表更改為新的響應表。 使用Form.getDestinationId()您可以獲得舊響應表的 ID(稍后用於清理)。 然后您可以使用Form.setDestination()進行更改。 如果您尚未創建新的響應表,則可以使用SpreadsheetApp.create()來執行此操作。

如果結果很好,那么您可以使用DriveApp.getFileById().isTrashed()將舊工作表發送到垃圾箱並完成此方法。 如果您對此過程有任何疑問,請告訴我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM