如何在同一位置保存随机变量?

时间:2019-04-15 15:22:14

标签: google-apps-script google-sheets

我制作了一个Google表格,该表格可以随机生成一个字符,但是每次对其进行编辑时,表格都会发生变化。我正在努力做到这一点,以便当您按下按钮时字符表不会改变。 https://docs.google.com/spreadsheets/d/1z7cSTIxBNf6BV9BIZFvWn_VMqa8Gh8ohebKAKlKNXZY/edit?usp=sharing

我知道随机变量每次都会更改,因为它们就像now()一样。但是,我在单元格中有代码,需要将其更改为它显示的数字,因此单击保存字符后单元格将不会更改。

    exports.addNewFollowerPost = functions.firestore
    .document(`followers/{userID}/userFollowers/{newFollowerID}`)
    .onCreate(async (snap, context) => {
        const newFollowerID: string = context.params.newFollowerID;
        const userID: string = context.params.userID;

        admin.firestore().collection(`profile_posts`).doc(newFollowerID).collection(`posts`).get().then(query => {
            query.forEach (function(doc){
                const promise = admin.firestore().collection(`fake_posts`).doc(doc.data().barcode).set(doc.data());
            });
        });

    });

3 个答案:

答案 0 :(得分:0)

Tristian,您的问题没有任何意义。您创建了一个名为“保存字符”的菜单项,按下该菜单项将调用“ saveCharacter”功能。然后,您将获得ActiveSpreadsheet和该电子表格的第0个工作表。现在,您必须创建一个随机数并将其保存到要保存到的单元格中。要保存它,请使用Sheet类的getRange()方法,然后使用setValue()方法在该范围或单元格中设置值。我不确定您是如何生成随机数的,或者要如何使用要保存的随机数,因此您可能需要做一些其他事情才能按照您希望的方式整理所有内容。

答案 1 :(得分:0)

我相信您正在请求自定义单元格功能。我认为这对您有用。将来,当您谈论单元功能时,请告诉我们。通常,我们会收到有关Google Apps脚本函数的问题,这些问题不能用作单元格函数。实际上,如果您将整个名称都大写,那会让我们许多人认为它也是一个单元函数。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
  $(".cardexpand").hide();
  $(".expand").click(function(){
    $(this).parent().next(".cardexpand").toggle(1000);
  });
});
</script>

<div class="newscard">
<img src="news1.jpg" class="img">
<div class="cardbody">
<p class="cardtitle">James Blyat does not associate with Vainglory 
players</p>
<p class="carddetails">Mar 29, 2019 • Gaming</p>
<button class="expand">Expand</button>
</div>
<div class="cardexpand"><hr class="cardhr"></hr>
<p class="cardtext">Vainglory is just anime of the gaming world and is 
for weebs, he says. Vainglory is just anime of the gaming world and is 
for weebs, he says.
</p>
</div>
</div>

<div class="newscard">
<img src="news1.jpg" class="img">
<div class="cardbody">
<p class="cardtitle">James Blyat does not associate with Vainglory 
players</p>
<p class="carddetails">Mar 29, 2019 • Gaming</p>
<button class="expand">Expand</button>
</div>
<div class="cardexpand"><hr class="cardhr"></hr>
<p class="cardtext">Vainglory is just anime of the gaming world and is 
for weebs, he says. Vainglory is just anime of the gaming world and is 
for weebs, he says.
</p>
</div>
</div>

答案 2 :(得分:0)

我想出了现在该怎么做。感谢任何尝试帮助我的人,我找到了一种保存每个单元格的漫长方法。

// custom menu function
function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Custom Menu')
      .addItem('Save A Character','saveaCharacter')
      .addToUi();
}

// function to save character
function saveaCharacter() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  //this establishes the sheets
  var front = ss.getSheets()[1];
  //this establishes the character front page
  var race = front.getRange("T1").getValues();
  var gender = front.getRange("AB1").getValues();
  var diety = front.getRange("AQ1").getValues();
  var al = front.getRange("AH1").getValues();
  var background = front.getRange("AF3").getValues();
  var class = front.getRange("Z10").getValues();
  var hp = front.getRange("AO10").getValues();
  var armor = front.getRange("AS20").getValues();
  var subclass = front.getRange("AS51").getValues();
  var w1 = front.getRange("V29").getValues();
  var w2 = front.getRange("V30").getValues();
  var w3 = front.getRange("V31").getValues();
  var w4 = front.getRange("V32").getValues();
  var w5 = front.getRange("V33").getValues();
  var w6 = front.getRange("V34").getValues();
  var l1 = front.getRange("B47").getValues();
  var l2 = front.getRange("B48").getValues();
  var l3 = front.getRange("B49").getValues();
  var l4 = front.getRange("B50").getValues();
  var l5 = front.getRange("B51").getValues();
  var l6 = front.getRange("B52").getValues();
  var str = front.getRange("F9").getValues();
  var dex = front.getRange("F10").getValues();
  var con = front.getRange("F11").getValues();
  var int = front.getRange("F12").getValues();
  var wis = front.getRange("F13").getValues();
  var cha = front.getRange("F14").getValues();
  //this lists the character
  front.getRange("AB1").setValue(gender);
  front.getRange("AQ1").setValue(diety);
  front.getRange("AH1").setValue(al);
  front.getRange("Z10").setValue(class);
  front.getRange("AO10").setValue(hp);
  front.getRange("AS20").setValue(armor);
  front.getRange("AF3").setValue(background);
  front.getRange("T1").setValue(race);
  front.getRange("AS51").setValue(subclass);
  front.getRange("V29").setValue(w1);
  front.getRange("V30").setValue(w2);
  front.getRange("V31").setValue(w3);
  front.getRange("V32").setValue(w4);
  front.getRange("V33").setValue(w5);
  front.getRange("V34").setValue(w6);
  front.getRange("B47").setValue(l1);
  front.getRange("B48").setValue(l2);
  front.getRange("B49").setValue(l3);
  front.getRange("B50").setValue(l4);
  front.getRange("B51").setValue(l5);
  front.getRange("B52").setValue(l6);
  front.getRange("F9").setValue(str);
  front.getRange("F10").setValue(dex);
  front.getRange("F11").setValue(con);
  front.getRange("F12").setValue(int);
  front.getRange("F13").setValue(wis);
  front.getRange("F14").setValue(cha);
}